根据csv中的列是否包含数据来编写文本字符串

时间:2013-10-10 08:27:43

标签: python csv python-2.7 append match

我有一个包含大型数据集的csv,现在我需要做的是根据列是否包含数据来编写tesxt字符串。例如,如果列30包含数据,则组成文本字符串:“文本数据文本(行[30])texy数据文本(行[12])文本数据文本”并附加到新文件。

X,classA,uniqueclassindicator1,x,x,1,x,x,x,x,125,21.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,
X,classA,uniqueclassindicator1,x,x,3,x,x,x,x,125,21.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,
X,classB,uniqueclassindicator2,x,x,1,x,x,x,x,125,21.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,7/9,2.05,£12.02
X,classB,uniqueclassindicator2,x,x,2,x,x,x,x,125,21.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,
X,classB,uniqueclassindicator2,x,x,3,x,x,x,x,125,21.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,
X,classB,uniqueclassindicator2,x,x,4,x,x,x,x,125,21.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,
X,classA,uniqueclassindicator3,x,x,1,x,x,x,x,125,21.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,
X,classA,uniqueclassindicator3,x,x,2,x,x,x,x,125,21.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,
X,classA,uniqueclassindicator3,x,x,3,x,x,x,x,125,21.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,
X,classA,uniqueclassindicator3,x,x,4,x,x,x,x,125,21.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,
X,classC,uniqueclassindicator4,x,x,1,x,x,x,x,125,21.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,
X,classC,uniqueclassindicator4,x,x,2,x,x,x,x,125,21.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,
X,classC,uniqueclassindicator4,x,x,3,x,x,x,x,125,21.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,
X,classC,uniqueclassindicator4,x,x,4,x,x,x,x,125,30.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,
X,classC,uniqueclassindicator4,x,x,5,x,x,x,x,125,31.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,
X,classC,uniqueclassindicator4,x,x,6,x,x,x,x,125,2130.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,
X,classA,uniqueclassindicator5,x,x,1,x,x,x,x,125,35.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,95/100,,£15.06
X,classA,uniqueclassindicator5,x,x,2,x,x,x,x,125,21.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,
X,classA,uniqueclassindicator5,x,x,3,x,x,x,x,125,21.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,
X,classA,uniqueclassindicator5,x,x,4,x,x,x,x,125,21.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,
X,classA,uniqueclassindicator5,x,x,5,x,x,x,x,125,21.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,
X,classA,uniqueclassindicator5,x,x,6,x,x,x,x,125,21.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,

作为同一个脚本的一部分,我需要能够为第31列和第31列执行相同的操作。 32。

例如,第30列的输出文件只能是:

Text data text 7/9 texy data text 21.8 text data text
Text data text 95/100 texy data text 21.8 text data text

对此的任何帮助将不胜感激。

亲切的问候

2 个答案:

答案 0 :(得分:4)

假设你有一个字符串列表,每行一个项目。

a = ['X,classA,uniqueclassindicator1,x,x,1,x,x,x,x,125,21.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,',
     'X,classA,uniqueclassindicator1,x,x,3,x,x,x,x,125,21.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,,,',
     'X,classB,uniqueclassindicator2,x,x,1,x,x,x,x,125,21.8,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,x,7/9,2.05,\xc2\xa312.02',
     .....
    ]
for item in a:
    item = item.split(',')
    if item[29]:
        print ('Text data text %s texy data text %s text data text' % (item[29], item[11]))

答案 1 :(得分:1)

试试这个,与上面的内容非常相似,但会打开一个csv文件:

代码:

import csv

with open(test.csv', 'rb') as mycsv:

    for item in mycsv:
        item = item.split(',')
        if item[29]:
            print ("Data text data %s" % (item[29])

希望有所帮助:)