带有自定义分隔符的Python readline

hgv*_*hgv 6 python readline end-of-line

新手在这里.我想从文件中读取行,但是在一个单行.txt文件,有一个\n在中间的地方,并尝试读取与.readline蟒蛇削减它在中间和输出两行线.

  • 当我复制并通过该行到这个窗口时,它显示为两行.所以我在这里上传了这个文件:https://ufile.io/npt3n

  • 还添加了文件的截图,如txt文件中所示.

  • 这是从Whatsup出口的群聊历史.如果你想知道的话.
  • 请帮我完整阅读一行,如txt文件所示.

.

f= open("f.txt",mode='r',encoding='utf8')

for i in range(4):
    lineText=f.readline()
    print(lineText)

f.close()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Ser*_*sta 9

Python 3允许您定义特定文件的换行符.它很少使用,因为默认的通用换行模式非常宽容:

从流中读取输入时,如果换行为"无",则启用通用换行模式.输入中的行可以以'\n','\ r'或'\ r \n'结尾,并且在返回给调用者之前将这些行转换为'\n'.

所以在这里你应该明确指出只有'\ r \n'是行尾:

f= open("f.txt",mode='r',encoding='utf8', newline='\r\n')

# use enumerate to show that second line is read as a whole
for i, line in enumerate(fd):   
    print(i, line)
Run Code Online (Sandbox Code Playgroud)

  • 它可以是 None、''、'\n'、'\r' 和 '\r\n' 之一。我尝试为我拥有的 xml 文件提供“/>\n”,但它给了我一个 ValueError:非法换行符值。该文件太大而无法通过完整读取来放入内存,因此我无法这样做并进行拆分。在我拥有的数百万行中,肯定会有一个错误的“\n”而不是正确的“\\n”,因为数据有一个由双引号转义的自由文本字段。最坏的情况是那条线和一个可怜的邻居在我使用正则表达式时被损坏,如果损坏则删除该线。我担心的是那条可怜的相邻线路。 (2认同)
  • @devssh:这是一个不同的问题。我会读取带有标准换行符值(`None`)的行,如果最后一个字符不是 `"\>"`,则将它们连接起来。但无论如何,对 XML 使用正则表达式通常是一个糟糕的解决方案。顺便说一句,xml.sax 可用于处理 xml 文件,而无需在内存中加载所有内容... (2认同)
  • 应该注意的是,`newline` 参数的唯一[允许值](https://docs.python.org/3/library/functions.html#open) 是 `None`、`''`、`' \n'`、`'\r'` 和 `'\r\n'`。当文件中的行由各种 [Unicode 换行符](https://en.wikipedia.org/wiki/Newline#Unicode) 之一分隔时,这可能会困扰您。 (2认同)