【问题标题】:How to write elements from a list into a csv with different columns如何将列表中的元素写入具有不同列的csv
【发布时间】:2020-11-22 06:56:55
【问题描述】:

例如,我有一个列表

['1 sam 2000','2 jack 1232','3 lily 34']

列表中的每个元素实际上包含 3 列的信息,并用空格分隔。 这些是从txt 文件中读取的。 现在我希望将这些数据保存到csv 文件中。

我用

阅读它们
with open('test.txt','r',encoding='utf-8',errors='ignore') as file:
    li = []
    for i in file:

        i =i.rstrip('\n')
        li.append(i)

或者我可以简单地将 txt 转换为 csv 吗?

【问题讨论】:

  • 您的标题说您正在尝试写入文件。您的问题看起来像您正在尝试从文件中读取。不太清楚你在问什么。

标签: python csv


【解决方案1】:

您正在将一个以空格分隔的 CSV 文件(我知道措辞很尴尬)读入一个列表。只需使用csv 模块。

import csv

with open('test.txt','r',encoding='utf-8',errors='ignore', newline='') as file:
    li = list(csv.reader(file, sep=' '))

【讨论】:

    【解决方案2】:

    对于列表的每个元素,您可以使用 split(" ") 创建单独的列表并输入 csv 库:

    import csv
    
    data= ['1 sam 2000','2 jack 1232','3 lily 34']
    
    with open("csv_file.csv", "w", newline="") as file:
        writer = csv.writer(file)
        for element in data:
            writer.writerow(element.split(" "))
    

    这应该创建一个名为 csv_file.csv 的文件:

    1,sam,2000
    2,jack,1232
    3,lily,34
    

    如果您需要添加标题,您可以在 for 循环之前添加此行:

    writer.writerow((header1, header2, header3...))

    【讨论】:

      【解决方案3】:
      ## assumed data to format in the list format
      ## split each element in the list and create another list of list item
      data=['1 sam 2000','2 jack 1232','3 lily 34']
      
      ## to save the final result initialize the variable
      final_data=[]
      
      ## go though each element in the list
      for i in data:
          # split each element with the space
          subdata=i.split(" ")
          ## add the element to the final_data
          final_data.append(subdata)
      
      
      ## import pandas and convert list into pandas dataframe
      ## convert pandas dataframe to csv using to_csv method in pandas
      import pandas as pd
      
      pd.DataFrame(final_data).to_csv("result.csv")
      

      【讨论】:

      • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助,质量更高,更有可能吸引投票。
      • 在发布之前学习正确的格式对我来说是一个挑战。我已经发布了一些 python 评论,但后来只接受了自动格式建议,只剩下上面的代码。
      • 任何视频链接,看看如何以正确的格式发布代码?
      【解决方案4】:

      如果需要,您可以跳过列表步骤,直接从 txt 文件转到 csv, 这样就可以了:

      import csv
          
      with open('yourtextfile.txt', 'r') as in_file:
          stripped = (line.strip() for line in in_file)
          lines = (line.split(",") for line in stripped if line)
          with open('result.csv', 'w') as out_file:
              writer = csv.writer(out_file)
              writer.writerow(('title', 'intro'))
              writer.writerows(lines)
      

      我以这个答案为例: Convert txt to csv python script

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-10
        • 2021-05-29
        • 1970-01-01
        相关资源
        最近更新 更多