【问题标题】:how to swap rows in csv file with python?如何用python交换csv文件中的行?
【发布时间】:2019-11-29 12:42:41
【问题描述】:

我有 11k 个 csv 文件,其中只有两行它们看起来像这样

---------------------------
             | A0.31       |
---------------------------
some data    |             |
---------------------------

我只希望它们在一行中

---------------------------
some data    | A0.31       |
---------------------------

我有这段代码,但它只是替换了没有将它们放在一行中的值

import csv, os

with open('path/to/filename') as inf, open('path/to/filename_temp', 'w') as outf:
    reader = csv.reader(inf)
    writer = csv.writer(outf)
    for line in reader:
        if line[1] == '0':
           ...
        ... # as above

os.remove('path/to/filename')
os.rename('path/to/filename_temp', 'path/to/filename')

【问题讨论】:

    标签: python database csv


    【解决方案1】:

    这应该可以解决问题。

    #!python
    value=""
    data=""
    with open("test.csv","r") as inF, open("out.csv","w") as outF:
        lines= inF.readlines()
        for line in lines:
            if "-" in line:
                continue
            if line.isspace():
                continue
            fields=line.split("|")
            if not fields[1].isspace():
                value=fields[1]
            elif not fields[0].isspace():
                data=fields[0]
            else:
                continue
        outF.write("-------------------------------------\n")
        outF.write(data +"|" + value+ "|" +"\n")
        outF.write("-------------------------------------\n")
    
    

    【讨论】:

      【解决方案2】:

      您指出您的文件是 CSV,所以我假设您的文件实际上是 CSV 格式,即如下:

      ,'A0.31'
      'some data',
      

      如果您的文件真的那么短,我只需在文件中加载两行,然后立即将组合结果写入同一个文件:

      import csv
      
      data = []
      with open('path/to/filename') as inf:
          reader = csv.reader(inf)
          for row in reader:
              data.append(row)
      
      with open('path/to/filename', 'w') as outf:
          writer = csv.writer(outf)
          writer.writerow([data[1][0], data[0][1]])
      
      
      

      【讨论】:

      • ,syn,A01.0 Брюшной тиф 0,"Тиф брюшной, Паратиф, Тиф, Паратифозная лихорадка",num 好的,这是我的输入 csv,这是我在你的代码 0 之后得到的,
      猜你喜欢
      • 2022-11-01
      • 2016-10-25
      • 1970-01-01
      • 2019-07-10
      • 1970-01-01
      • 2010-11-12
      • 1970-01-01
      • 1970-01-01
      • 2018-09-20
      相关资源
      最近更新 更多