因此,假设您有一个名为 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),以及它对应的标题值 (r)用于执行字符串replace() 以将文本替换为空字符串,即如果存在则将其删除。
使用 Python 2.7.12 测试