繁体   English   中英

如何将列表中的元素写入具有不同列的 csv

[英]How to write elements from a list into a csv with different columns

我有一个清单,例如

['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 吗?

## 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")

对于列表的每个元素,您可以使用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...))

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

import csv

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

如果需要,您可以跳过列表步骤,直接从 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM