读取文件时出现零(其中没有)

2024-04-25 03:56:35 发布

您现在位置:Python中文网/ 问答频道 /正文

在Linux上使用Python读取文件(UTF-8 Unicode文本,csv)时,可以使用:

  • 你知道吗csv.reader文件()
  • 文件()

有些列的值得到一个零作为它们的第一个字符(输入中没有零),其他列得到几个零,这在使用Geany或任何其他编辑器查看文件时是看不到的。例如:

输入

10016;9167DE1;Tom;Sawyer ;Street 22;2610;Wil;;378983561;tom@hotmail.com;1979-08-10 00:00:00.000;0;1;Wil;081208608;NULL;2;IZMH726;2010-08-30 15:02:55.777;2013-06-24 08:17:22.763;0;1;1;1;NULL

输出

10016;9167DE1;Tom;Sawyer ;Street 22;2610;Wil;;0378983561;tom@hotmail.com;1979-08-10 00:00:00.000;0;1;Wil;081208608;NULL;2;IZMH726;2010-08-30 15:02:55.777;2013-06-24 08:17:22.763;0;1;1;1;NULL

请参见378983561>;0378983561 阅读方式:

f = file('/home/foo/data.csv', 'r')
data = f.read()
split_data = data.splitlines()
lines = list(line.split(';') for line in split_data)
print data[51220][8]
>>> '0378983561' #should have been '478983561' (reads like this in Geany etc.)

与相同的结果csv.reader文件(). 你知道吗

帮我解开谜团,是什么原因造成的?是否与编码/解码有关?你知道吗


Tags: 文件csvcomstreetdatanullreadersplit
2条回答

你得到的数据是一个字符串。你知道吗

print data[51220][8]
>>> '0478983561'

如果要将其用作整数,应该对其进行解析。你知道吗

print int(data[51220][8])
>>> 478983561

如果要将其作为字符串,则应将其转换回字符串。你知道吗

print repr(int(data[51220][8]))
>>> '478983561'

你知道吗csv.reader文件将所有列视为字符串。转换为适当的类型由您决定,如:

print int(data[51220][8])

相关问题 更多 >