0

我正在测试一个 Python 2 脚本,该脚本将 CSV 文件的文本作为命令行参数。CSV 是一个标准的 Excel CSV 文件,带有','项目分隔符和'\r\n'行尾分隔符。

问题是我需要将 CSV 文本作为单行传递给脚本,以便将字符串识别为单个参数。为了做到这一点,我在记事本中打开 CSV 并替换所有新行'\r\n',使我能够成功地将测试读入我的脚本。但是,当我尝试csv.reader从字符串创建对象时,csv.reader只会看到一行我希望 iot 看到多行的地方。

给定以下 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是正确的,但我似乎没有使用正确的方法。

有任何想法吗?谢谢,在adv.!

4

1 回答 1

0

为什么不直接从 csv 文件中读取这些行?如:

    with open('D:/file-1.csv','r') as csvfile:
         creader=csv.reader(csvfile, delimiter=',')
         for line in creader:
             print line

只需用您自己的功能替换“打印线”即可。如果您确实需要手动复制 csv 文件中的每一行,您可以尝试在传递给阅读器之前将每一行用 '\r\n' 分割。

for line in 'The,quick,brown,fox\r\njumps,over,the,lazy,dog'.split('\r\n'):
    print line
于 2013-07-11T07:48:19.077 回答