使用Python将TXT文件转换为CSV

时间:2017-08-16 16:32:19

标签: python csv

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

Output(data.txt)


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

OR

name_of_bucket:apache_web,bucket_id:/mystorage/nfs/indexes,size:18452
name_of_bucket:apache_web,bucket_id:/mystorage/nfs/indexes,size:0

期待

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

3 个答案:

答案 0 :(得分:0)

file = open("data.txt", "r")

String = ""
for line in file:
    String += line

file.close()

file = open("data.csv", "a")
file.write(String)
file.close()

答案 1 :(得分: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)

答案 2 :(得分:0)

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

apache_web,/my_storage/nfs/indexes,18452
apache_web,/my_storage/nfs/indexes,0
name_of_bucket:apache_web,bucket_id:/mystorage/nfs/indexes,size:18452
name_of_bucket:apache_web,bucket_id:/mystorage/nfs/indexes,size: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文件:

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

首先,它利用Python csv库自动拆分每行中的条目并创建值列表。接下来,它使用列表推导来删除相应的标头值(附加:)(如果存在)。接下来,它将修改的条目列表写入新的输出文件。

zip()用于允许您从多个列表中一次读取一个值,在这种情况下,它从行(cell)中获取一个条目,以及相应的标头值({{ 1}})它用来做一个字符串r来用空字符串替换文本,即删除它(如果存在)。

使用Python 2.7.12进行测试