【发布时间】:2022-01-21 23:10:11
【问题描述】:
我在 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 中以
'rU'模式打开文件,看看是否得到 10401。如果这样做,差异是由通用换行符引起的。不过,如果是这样的话,那将是一个非常奇怪的 CSV 文件。 -
len在这里没有提供足够的信息。f[:10]给了什么?当这两个结果不同时,这是一种更好的探测方式。 -
很遗憾,我无法发布文件,因为它与工作有关。 @user2357112supportsMonica 它确实与 csv 中的 \n 字符有关。查看 csv 中的所有字段,其中有几个字段包含 \n 字符。你是对的。但是如何让 python 3 忽略这些,只做行尾?
标签: python python-3.x python-2.7 list-comprehension readlines