【问题标题】:How to wrap a CSV column with single quotes [closed]如何用单引号包裹 CSV 列 [关闭]
【发布时间】:2018-11-28 20:38:06
【问题描述】:

如何使用 Python 脚本将 CSV 列用单引号括起来? 我正在尝试使用终端来完成这项任务。

【问题讨论】:

  • @jonrsharpe 这是一个自我回答的问题......值得怀疑......
  • 请注意,self-answered questions虽然可以,但还是要满足问题和答案的基本要求。
  • 我想知道如果我对 q 和 a 投反对票,它是否被认为是 seriab downvoting...对不起 Raj,但如果我需要这个,我可能会使用 csv 模块并对其进行配置引用。您正在使用简单的字符串操作,可以快速向南移动。
  • 该死,没想到我的第一次问答会出现这种反应。我会把它拿下来。 :/ @PatrickArtner 我在一个 10k 行的 CSV 文件上进行了操作,效果很好。

标签: python csv terminal quotes


【解决方案1】:

使用csv 模块来操作 csv。它的存在是为了不再编写这种代码,也不必为 csv 方言(例如不同的分隔符)以及何时引用等而烦恼。

通读the documentation,了解它对您的作用以及您应该使用它的原因。

import sys
import csv


reader = csv.reader(sys.stdin)
writer = csv.writer(sys.stdout, delimiter=',', quoting=csv.QUOTE_ALL)
for row in reader:
    writer.writerow(row)

拨打python test.py < check.py > check_out.py:

检查.py:

bla,blubb,test
foo,,bar
bingo,bongo,bong

check_out.py:

"bla","blubb","test"
"foo","","bar"
"bingo","bongo","bong"

其他类似问题:

【讨论】:

    【解决方案2】:

    使用以下 Python 脚本:

    import sys
    import re
    
    def addQuotes( str ):
        matches = re.match( '^".*"$', str )
        if matches == None:
            return "'" + str + "'"
        return str
    
    for line in sys.stdin:
        line = line.strip()
        parts = line.split( ',' )
        newParts = map( addQuotes, parts )
    

    之后,在终端上运行以下命令:

    python QuoteCSV.py new.csv

    旁注:如果你想用双引号换行,你可以把addQuotes函数的return语句改成:

    return '"'+str+'"'
    

    【讨论】:

      猜你喜欢
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-07
      • 2013-01-07
      • 2019-05-28
      • 2018-02-27
      相关资源
      最近更新 更多