Python中为什么按行读取txt文本列表每一行都带了\n?

不能自动去掉 \n 么
Python中为什么按行读取txt文本列表每一行都带了\n?

55 回复

换行符。
要去掉的话:
for line in file.readlines():
line=line.strip(’\n’)


这是文件读取的基本特性。\n是换行符,表示每行的结尾。当你用readlines()或迭代文件对象时,Python会保留这个字符。

看个例子就明白了:

# 假设 test.txt 内容为:
# Hello
# World

with open('test.txt', 'r') as f:
    lines = f.readlines()
    print(lines)  # 输出:['Hello\n', 'World\n']

# 或者用循环
with open('test.txt', 'r') as f:
    for line in f:
        print(repr(line))  # 输出:'Hello\n' 和 'World\n'

要去掉\n,有几种常用方法:

  1. strip()方法 - 去掉首尾空白字符(包括\n
with open('test.txt', 'r') as f:
    lines = [line.strip() for line in f]
  1. rstrip('\n') - 只去掉右侧的换行符
with open('test.txt', 'r') as f:
    lines = [line.rstrip('\n') for line in f]
  1. splitlines() - 专门用来分割文本行
with open('test.txt', 'r') as f:
    content = f.read()
    lines = content.splitlines()  # 自动去掉换行符

简单说,\n是文件的一部分,去掉它用strip()splitlines()就行。

Python 不会自动去掉换行符的。
with open(‘test.txt’, ‘r’) as f:
lines = [line.strip() for line in f.readlines()]

使用 strip()函数可以去掉行首和行尾的 whitespace,比如空格,制表符、换行符。

\n 是换行符。

要去掉的话,自己处理

.rstrip("\n")

readlines 很慢的 ,, 直接 for line in file

Windows 下的文本文件行末是\n\r 哦

谢谢楼上各位的解答, 我主要是疑惑为什么还带个 ‘\n’,以前用 delphi, 这种都是预处理掉 换行符的,所以疑惑了一下

这是哪个位面的 Windows。


linux,unix:\r\n
windows:\n
Mac OS:\r


你 linux 和 windows 的搞反了吧

at 错人了。你 linux 和 windows 的搞反了吧




总之 windows 的换行符是先回车再换行
linux 只有回车,mac 只有换行

你们是搞笑吗?

LF: Unix and Unix-like systems (Linux, macOS, FreeBSD, Multics, AIX, Xenix, etc.), BeOS, Amiga, RISC OS, and others[1]

CR+LF: Microsoft Windows, DOS (MS-DOS, PC DOS, etc.), DEC TOPS-10, RT-11, CP/M, MP/M, Atari TOS, OS/2, Symbian OS, Palm OS, Amstrad CPC, and most other early non-Unix and non-IBM operating systems

https://stackoverflow.com/questions/426397/do-line-endings-differ-between-windows-and-linux

I translate this into these line endings in general:

Windows: '\r\n’
Mac (OS 9-): '\r’
Mac (OS 10+): '\n’
Unix/Linux: '\n’


我 96 年开始玩电脑的,难道你们现在这些小年轻码农玩的不一样?



所以我们这个位面的 windows 是 /r/n,不是 /n/r…

尴尬现场

尬秀现场

你们这个位面的不打错字?

楼上看的我一脸懵


你的回答才是完整的

因为本来就每一行都有 \n

是是是,你把\r\n 打错成\n\r 一定是我们的错。
错怪你了,不好意思啊。





「我玩电脑玩得早,你们这些小年轻也配挑我的错?」

他以为 96 年开始玩电脑就算早的了……(无奈

我 96 年开始玩电脑的,难道你们现在这些小年轻码农玩的不一样?哈哈哈

#24

年轻真好

我已是老头一个……

96 年就开始完电脑的大神,能帮我盗个号吗 (๑◔‿◔๑)

哇.jpg

是不是歪楼了


哈哈哈哈,那人真逗。

第一次遇到这样的问题的时候是两个文档内容一模一样,是个密码字典。一看,哎呦喂,怎么一个 10M,一个 13M (假设)。
看内容一样,看 16 进制发现不对,似乎是文件格式不同。最后百度了下,才知道每个系统下文件的换行字符不一样。

对于 96 年开始玩电脑的,我掐指算了算,这人真“年轻”····

哇.jpg

windows: \r\n
unix(linux,mac): \n
en.wikipedia.org/wiki/Newline

自己看自己的六楼…摊手

看看谁先挑衅谁的,sb

文件不大就一次读入

open(file).read().splitlines()

你六楼说错,别人指出你的错误,然后你 14 楼说

你们是搞笑么?


怎么看也是你在挑衅别人啊,SB

Python 读文本文件根本不会读到 \r,三种行尾都会转换成 \n

瓜子花生矿泉水

感谢扩充某个增强友善度的列表

嗯,我记得也是这样。

各位生活经验+1,不是每个人都有幽默感的

#33 喵喵喵?

前排出售 96 年的拉菲和花生米

00 年开始玩电脑的看着楼上瑟瑟发抖

我之前一直以为 Linux \n 上换行是天经地义的事情,即使我知道 Windows 上是使用 \r\n,我也坚持认为一切微软出品必是邪魔歪道, 直到我看见 HTTP 协议中 的信息分行……

妈妈快看!我会粘贴 jpg 拉!还是 imgur 的呢,是不是比其他同学牛呢?


所以说码农永远是社会底层的渣子。

表面迎合.jpg

我的天

你牛逼你牛逼,我是渣渣~~

兄弟米心态怎么炸成这样,太有争斗心了。

#53 看历史记录,仅鄙视"码农"这个群体.虽然不清楚发生了什么,但是还是要

回到顶部