【问题标题】:How to read multiline command line arguments into a python2 CSV reader如何将多行命令行参数读入 python2 CSV 阅读器
【发布时间】:2013-07-09 08:19:51
【问题描述】:

我正在测试一个 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.!

【问题讨论】:

    标签: python csv command-line python-2.6


    【解决方案1】:

    为什么不直接从 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2010-12-15
      • 2016-06-14
      • 1970-01-01
      • 2020-06-13
      相关资源
      最近更新 更多