我正在尝试读取一个包含很多非传统换行符的文本文件。
有两个文件,每个文件都有18846行。但是,当我在python3中读取其中一个文件并分成几行时,结果为19010行。
使用python2或LocalDate
和awk 'END {print NR}' file
之类的unix命令都不会重复此操作。我知道python3确实会根据12个条件(在[1]中命名)拆分行。
我尝试过使用替换的策略:
wc -l
使用“ rt”甚至使用ftfy打开文件,但没有其他选择可以成功。
有人知道如何使用wc和awk所采用的相同策略读取断行的文件吗? 甚至可能正在更改这样的文件。
[1] https://docs.python.org/3/library/stdtypes.html#str.splitlines
答案 0 :(得分:3)
使用io.open
并将newline
参数设置为您选择的行尾(如Unix工具中的\n
):
with io.open(file_path, 'r', encoding='utf8', newline='\n') as sr:
for line in sr:
# do stuff
请注意,您可能还希望删除所有其他换行符或将它们替换为空格。可以使用类似正则表达式的
import re
line = re.sub('[\u000B\u000C\u000D\u0085\u2028\u2029]+', ' ', line)
其中模式与一个或多个字符匹配的地方
\u000B
-VT,垂直制表符\u000C
-FF,换页\u000D
-CR,回车符\u0085
-NEL,下一行(非常频繁)\u2028
-LSEP,行分隔符\u2029
-PSEP,段落分隔符