使用Python将TXT文件转换为CSV

使用Python将TXT文件转换为CSV,python,csv,Python,Csv,我有txt输出,我愿意将其转换为CSV Output(data.txt) apache_web,/my_storage/nfs/indexes,18452 apache_web,/my_storage/nfs/indexes,0 或 期待 name_of_bucket,bucket_id,size apache_web,/my_storage/nfs/indexes,18452 apache_web,/my_storage/nfs/indexes,0 .

我有
txt
输出,我愿意将其转换为
CSV

Output(data.txt)


apache_web,/my_storage/nfs/indexes,18452          
apache_web,/my_storage/nfs/indexes,0

期待

name_of_bucket,bucket_id,size    
apache_web,/my_storage/nfs/indexes,18452   
apache_web,/my_storage/nfs/indexes,0

.csv文件是一种纯文本格式,Excel将其解释为单元格,因此您可以将该输出写入“.csv”文件扩展名,如下所示:

with open("data.txt", "r") as f:
    content = f.readlines()

with open("data.csv", "w+") as csvfile:
    csvfile.write("name_of_bucket,bucket_id,size\n")
    csvfile.writelines(content)

因此,假设您有一个名为
data.txt
的输入文件,其中包含以下四行,即两种可能的格式:

apache_-web,/my_-storage/nfs/index,18452
apache_web,/my_存储/nfs/索引,0
bucket的名称:apache\u web,bucket\u id:/mystorage/nfs/index,大小:18452
bucket的名称:apache\u web,bucket\u id:/mystorage/nfs/index,大小:0
以下脚本可以读取每一行,删除每一列的前缀,并将修改后的值写回
output.csv
文件:

import csv

header = ['name_of_bucket', 'bucket_id', 'size']

with open('data.txt', 'rb') as f_data, open('output.csv', 'wb') as f_output:
    csv_data = csv.reader(f_data)
    csv_output = csv.writer(f_output)
    csv_output.writerow(header)

    for row in csv_data:
        row = [cell.replace(r + ':', '') for cell, r in zip(row, header)]
        csv_output.writerow(row) 
为您提供一个
output.csv
文件,其中包含:

桶的名称、桶id、大小
apache_web,/my_storage/nfs/indexes,18452
apache_web,/my_存储/nfs/索引,0
apache_web,/mystorage/nfs/index,18452
apache_web,/mystorage/nfs/index,0
首先,它使用Python
csv
library自动分割每行中的条目,并生成一个值列表。接下来,它使用列表理解删除相应的标题值(附加
)。接下来,它将修改后的条目列表写入一个新的输出文件

zip()
用于允许您从多个列表中一次读取一个值,在这种情况下,它从行(
单元格
)中获取一个条目,并使用相应的标题值(
r
)来执行字符串
replace()
以空字符串替换文本,即,如果存在,将其删除


使用Python2.7.12测试时,我得到的输出与txt中的一样,它没有转换为CSV,这是我在问题“可能的副本”中所期望的
with open("data.txt", "r") as f:
    content = f.readlines()

with open("data.csv", "w+") as csvfile:
    csvfile.write("name_of_bucket,bucket_id,size\n")
    csvfile.writelines(content)
import csv

header = ['name_of_bucket', 'bucket_id', 'size']

with open('data.txt', 'rb') as f_data, open('output.csv', 'wb') as f_output:
    csv_data = csv.reader(f_data)
    csv_output = csv.writer(f_output)
    csv_output.writerow(header)

    for row in csv_data:
        row = [cell.replace(r + ':', '') for cell, r in zip(row, header)]
        csv_output.writerow(row)