我正在测试一个Python文件,它将CSV文件的文本作为命令行参数。
CSV是一个标准的Excel CSV文件,其中包含项目的','
分隔符,大概是'\r\n'
行结尾。
问题是我需要将CSV文本作为单行传递给脚本,以便将字符串识别为单个参数。为了做到这一点,我在记事本中打开CSV并用'\r\n'
替换所有新行,这使我能够成功地将测试读入我的脚本。但是,当我尝试从字符串创建csv.reader
对象时,csv.reader
只能看到一条我想要看到多行的单行。
给出以下CSV字符串示例:
The,quick,brown,fox\r\njumps,over,the,lazy,dog
我希望以下几行:
The,quick,brown,fox
jumps,over,the,lazy,dog
但我最终只得到一行:
The,quick,brown,fox\r\njumps,over,the,lazy,dog
从命令行捕获字符串后,我使用以下内容将其加载到csv.reader
:
input_str = self.GetCsvStringFromInput()
input_reader = csv.reader(StringIO.StringIO(input_str))
我正在使用Windows,所以我认为\r\n
是正确的,但我似乎没有使用正确的方法。
有什么想法吗? 谢谢,先生!
答案 0 :(得分:0)
为什么不直接从csv文件中读取这些行?如:
with open('D:/file-1.csv','r') as csvfile:
creader=csv.reader(csvfile, delimiter=',')
for line in creader:
print line
只需将'print line'替换为您自己的功能。如果您确实需要手动复制csv文件中的每一行,您可以尝试在传递给阅读器之前将每行分成'\ r \ n'。
for line in 'The,quick,brown,fox\r\njumps,over,the,lazy,dog'.split('\r\n'):
print line