readlines() python 2.7 vs 3.10



我在python 2.7中写了一个脚本,但想切换到python 3.10。唯一的问题是,由于某种原因,readlines((命令没有产生相同的结果,并导致我的列表组件出现问题。以下是两个不同的版本及其结果:


Python 2.7

file_to_open = open('file.csv', 'r') 
f = file_to_open.readlines()
print(len(f))

结果是2001


Python 3.10

file_to_open = open('file.csv', 'r') 
f = file_to_open.readlines()
print(len(f))

结果是10401


csv文件有2001行,所以这是正确的数字。一定有一些角色在创建新行,或者在python 3版本中出现了问题。以前有人遇到过这种情况吗?

这与通用新行以及python 2和3如何读取它们有关。在CSV文件中,字段中有额外的'\r'字符。因此,我不得不在打开文件时使用"b"选项来忽略通用新行。但后来它以字节的形式读取每一行,所以我不得不将每一行都键入强制转换回str,然后执行re.sub来替换'\r'字符。下面是我创建的列表,它最终完美地工作了。

进口再

f=[re.sub('\r','',str(line((表示打开的行('file.csv','rb'(]

最新更新