首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将每个在python中带有逗号与双引号之间的CSV字段括起来

将每个在python中带有逗号与双引号之间的CSV字段括起来
EN

Stack Overflow用户
提问于 2021-12-27 13:11:19
回答 2查看 34关注 0票数 0

我试图用csv模块将每个字段值括在双引号中。但这里的诀窍是,在需要跳过的值之间有逗号。这是我用来将值括在引号中的片段。

数据:

代码语言:javascript
复制
col1,col2
first row,This section of the badge focuses on Communications
second row,Feedback has partnered with team members, leaders, and executives receive confidential, anonymous feedback

代码段

代码语言:javascript
复制
import csv

with open('data.csv') as input, open('out.csv','w') as output:
    reader = csv.reader(input)
    writer = csv.writer(output, delimiter=',', quoting=csv.QUOTE_ALL)
    for line in reader:
        writer.writerow(line)

输出

代码语言:javascript
复制
"col1","col2"
"first row","This section of the badge focuses on Communications"
"second row","Feedback has partnered with team members"," leaders"," and executives receive confidential"," anonymous feedback"

预期产出

代码语言:javascript
复制
"col1","col2"
"first row","This section of the badge focuses on Communications"
"second row","Feedback has partnered with team members, leaders, and executives receive confidential, anonymous feedback"
EN

回答 2

Stack Overflow用户

发布于 2021-12-27 13:40:32

由于输入数据不是常规的CSV文件,使用csv模块读取输入文件可能会出现问题。为了解决这个问题,您可以直接读取文件的行,然后按如下方式解析它们:

代码语言:javascript
复制
import csv

with open('data.csv') as fin, open('out.csv','w') as fout:
    writer = csv.writer(fout, delimiter=',', quoting=csv.QUOTE_ALL)
    for line in fin:
        writer.writerow(line.rstrip().split(',', 1))
票数 0
EN

Stack Overflow用户

发布于 2021-12-27 13:42:10

您可以将DictReaderDictWriterrestkey属性一起使用:

代码语言:javascript
复制
with open('data.csv') as inp, open('out.csv', 'w') as out:
    reader = csv.DictReader(inp, restkey='colN')
    writer = csv.DictWriter(out, fieldnames=reader.fieldnames,
                            delimiter=',', quoting=csv.QUOTE_ALL)
    writer.writeheader()
    for line in reader:
        line[reader.fieldnames[-1]] += ','.join(line.pop('colN', []))
        writer.writerow(line)

out.csv含量

代码语言:javascript
复制
"col1","col2"
"first row","This section of the badge focuses on Communications"
"second row","Feedback has partnered with team members leaders, and executives receive confidential, anonymous feedback"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70495932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档