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认为整个文件首先都在一行上.有没有人对此有所了解?
您的文件\r用作行分隔符(也称为"CR"或"Classic Mac"换行符约定).Python open默认不处理这个问题.
您可以使用"通用换行"模式('rU'模式输入open)正确打开文件.
(请注意,一些Mac文本编辑器仍然使用它\r作为行终止符,尽管幸运的是现在它们比几年前少得多.)