.txt文件在readlines()下表现得很奇怪

时间:2013-01-20 07:47:18

标签: text python-2.7 textedit readlines

该文件的内容如下所示:

1/15/13,930,1441.5
1/15/13,1000,1442.75
1/15/13,1030,1444

我跑:

the_txt_file = open('/txt_file')   

然后我跑:

the_txt_file_as_a_list =  the_txt_file.readlines()

然后我跑:

print the_txt_file_as_a_list

我明白了:

['1/15/13,930,1441.5\r1/15/13,1000,1442.75\r1/15/13,1030,1444\r1/']

但我期待的是:

['1/15/13,930,1441.5\n','15/13,1000,1442.75\n','15/13,1030,1444\n']

这种情况经常发生在我身上,发生了什么事?

2 个答案:

答案 0 :(得分:2)

所以似乎问题与我的mac与.txt文件交互的方式有关

问题是通过交换解决的:

the_txt_file = open('/txt_file')   

使用:

the_txt_file = open('/txt_file', 'rU')

'rU'被称为'通用读取线'。以“rU”模式打开文件是以通用读取模式打开文件。运行时:

the_txt_file_as_a_list =  the_txt_file.readlines()

然后:

print the_txt_file_as_a_list

我的输出来自:

['1/15/13,930,1441.5\r1/15/13,1000,1442.75\r1/15/13,1030,1444\r1/']

到:

['1/15/13,930,1441.5\n', '1/15/13,1000,1442.75\n', '1/15/13,1030,1444\n']

后来,我能够通过以下方式单独打印每个项目:

for item in the_txt_file_as_a_list:
    print item

输出看起来像:

1/15/13,930,1441.5

1/15/13,1000,1442.75

1/15/13,1030,1444

答案 1 :(得分:1)

我会假设你,或者这个数据文件的原始创建者都在Mac上。看起来你期望它是一个简单的'\ n'行结束,但遭受原始编辑系统默认行结束(最有可能)。

一个简单的解决方法是使用open(...)选项调用rU,如下所示:

the_txt_file = open('/txt_file', 'rU')

这样可以确保只打开文件 r ,并在阅读特定文件时使用 U 通用换行支持。

祝你好运!