【问题标题】:Composing text string dependant on if column in csv contains data根据 csv 中的列是否包含数据来组合文本字符串
【发布时间】:2013-10-17 21:56:59
【问题描述】:

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

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 和 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

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

亲切的问候

【问题讨论】:

    标签: python csv python-2.7 append match


    【解决方案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])
    

    希望有帮助:)

    【讨论】:

      【解决方案2】:

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

      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]))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-13
        • 2018-10-15
        • 2021-05-22
        • 2019-05-14
        • 1970-01-01
        • 1970-01-01
        • 2016-04-15
        相关资源
        最近更新 更多