为什么Python 2.7.3认为我的.csv文档都在一行?

Jer*_*ron 3 python csv for-loop line-endings python-2.7

我是编程的新手,我在一些课程中遇到了一个我无法理解的问题.考虑一个名为'example.csv'的虚构文件,其中包含以下内容.

Key1,Value1
Key2,Value2
Key3,Value3
...
Run Code Online (Sandbox Code Playgroud)

如果我运行以下代码,它会打印文件中的每一行,然后在最后一行打印一个星号.我希望它打印每个用星号分隔的行.

infile = open("example.csv", "r")
for line in infile:
    print line.strip()
    print '*'
    #row_elements = line.split(",")
    #print row_elements
Run Code Online (Sandbox Code Playgroud)

此外,如果我尝试通过删除上面代码中的哈希值来分割每个逗号的行,我得到以下输出.

['Key1', 'Value1\rKey2', 'Value2\rKey3'...
Run Code Online (Sandbox Code Playgroud)

通过将"\ r"传递给.split()方法,输出稍有改进.

['Key1,Value1', 'Key2,Value2'...
Run Code Online (Sandbox Code Playgroud)

我仍然不明白为什么python认为整个文件首先都在一行上.有没有人对此有所了解?

nne*_*neo 7

您的文件\r用作行分隔符(也称为"CR"或"Classic Mac"换行符约定).Python open默认不处理这个问题.

您可以使用"通用换行"模式('rU'模式输入open)正确打开文件.

(请注意,一些Mac文本编辑器仍然使用它\r作为行终止符,尽管幸运的是现在它们比几年前少得多.)