首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Python合并CSV字符串中的字段?

如何使用Python合并CSV字符串中的字段?
EN

Stack Overflow用户
提问于 2009-08-03 18:47:31
回答 4查看 7.6K关注 0票数 3

我正在尝试使用Python在CSV文件的每一行中合并三个字段。这将很简单,除了一些字段被双引号括起来并包括逗号。下面是一个示例:

代码语言:javascript
复制
,,Joe,Smith,New Haven,CT,"Moved from Portland, CT",,goo,

有没有一种简单的算法可以为这种格式的每一行合并字段7-9?并非所有行都包含双引号中的逗号。

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-08-03 18:49:57

像这样的东西?

代码语言:javascript
复制
import csv
source= csv.reader( open("some file","rb") )
dest= csv.writer( open("another file","wb") )
for row in source:
    result= row[:6] + [ row[6]+row[7]+row[8] ] + row[9:]
    dest.writerow( result )

示例

代码语言:javascript
复制
>>> data=''',,Joe,Smith,New Haven,CT,"Moved from Portland, CT",,goo,
... '''.splitlines()
>>> rdr= csv.reader( data )
>>> row= rdr.next()
>>> row
['', '', 'Joe', 'Smith', 'New Haven', 'CT', 'Moved from Portland, CT', '', 'goo', '' ]
>>> row[:6] + [ row[6]+row[7]+row[8] ] +  row[9:]
['', '', 'Joe', 'Smith', 'New Haven', 'CT', 'Moved from Portland, CTgoo', '']
票数 10
EN

Stack Overflow用户

发布于 2009-08-04 00:24:52

您可以使用csv模块来完成繁重的任务:http://docs.python.org/library/csv.html

您并没有确切地说明希望如何合并这些列;估计您不希望合并后的字段被“从Portland,CTgoo移来”。下面的代码允许您指定分隔符字符串(可能是", ")并处理空/空白字段。

代码语言:javascript
复制
[transcript of session]
prompt>type merge.py
import csv

def merge_csv_cols(infile, outfile, startcol, numcols, sep=", "):
    reader = csv.reader(open(infile, "rb"))
    writer = csv.writer(open(outfile, "wb"))
    endcol = startcol + numcols
    for row in reader:
        merged = sep.join(x for x in row[startcol:endcol] if x.strip())
        row[startcol:endcol] = [merged]
        writer.writerow(row)

if __name__ == "__main__":
    import sys
    args = sys.argv[1:6]
    args[2:4] = map(int, args[2:4])
    merge_csv_cols(*args)

prompt>type input.csv
1,2,3,4,5,6,7,8,9,a,b,c
1,2,3,4,5,6,,,,a,b,c
1,2,3,4,5,6,7,8,,a,b,c
1,2,3,4,5,6,7,,9,a,b,c

prompt>\python26\python merge.py input.csv output.csv 6 3 ", "

prompt>type output.csv
1,2,3,4,5,6,"7, 8, 9",a,b,c
1,2,3,4,5,6,,a,b,c
1,2,3,4,5,6,"7, 8",a,b,c
1,2,3,4,5,6,"7, 9",a,b,c
票数 3
EN

Stack Overflow用户

发布于 2009-08-03 18:57:24

Python中有一个内置模块,用于解析CSV文件:

http://docs.python.org/library/csv.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1223967

复制
相关文章

相似问题

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