【问题标题】:Use Python to parse comma separated string with text delimiter coming from stdin使用 Python 解析带有来自标准输入的文本分隔符的逗号分隔字符串
【发布时间】:2015-03-27 17:55:40
【问题描述】:

我有一个 csv 文件,它通过标准输入输入到我的 Python 脚本中。

这是一个逗号分隔的文件,以引号作为文本分隔符。

这是一个示例行:

457,"Last,First",NYC

到目前为止,我的脚本通过查找逗号来分割每一行,但我如何让它知道文本分隔符引号?

我当前的脚本:

for line in sys.stdin:   
    line = line.strip()
    line.split(',')
    print line

代码将名称分成两部分,因为它无法识别包含该文本字段的引号。我需要将名称保留为单个元素。

如果重要,数据将通过 hadoop 流程序中的标准输入提供。

谢谢!

【问题讨论】:

    标签: string csv stdin


    【解决方案1】:

    嗯,你可以更手动地做,像这样:

    row = []
    enclosed = False
    word = ''
    for character in sys.stdin:        
        if character == '"':
            enclosed = not enclosed
        elif character = ',' and not enclosed:
            row.append(word)
            word = ''
        else:
            word += character
    

    没有测试也没有考虑太久,但在我看来它可以工作。可能更喜欢 Pythonist sintax 的人可以更好地完成这个技巧;)

    【讨论】:

      【解决方案2】:

      试图回答我自己的问题。如果我没看错,可以像这样将流输入发送到 csv 阅读器:

      for line in csv.reader(sys.stdin): 
          print line
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-20
        • 1970-01-01
        • 1970-01-01
        • 2019-12-04
        • 1970-01-01
        • 2021-11-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多