[英]Convert complex txt to csv python script
我有一個.txt
文件,里面有這個
Name: 321;
Score:100; Used Time: 1:09:308;
GTime: 6/28/2024 10:04:18 PM;
Core Version : 21.0.0.0;
Software Version : 21.0.0.0;
AppID: 0S0; MapDispName: Future City; MapName:MapName MapName MapName;
Key:A0000-abcde-Q0000-F0000-00H00; REG Date : 2/27/2021 1:16:34 PM; Expiry : 7/7/2024 12:00:00 AM
我要做的是使用 python 腳本將該文本轉換為.csv
(表格)。 每個文件有 300 個文件和數百行。 我們只需要將前7行的信息轉化為csv即可。 所有這 300 個文件都具有相同的格式但具有不同的值。
我希望log.csv
文件顯示的是:
Name,Sore,Time,Software Ver,Core Ver,AppID,Key,REG Date,Expiry,MapName
321,100,69.308s,21.0.0.0,21.0.0.0,0S0,A0000-abcde-Q0000-F0000-00H00,2/27/2021 1:16:34 PM,7/7/2024 12:00:00 AM,MapName MapName MapName
如何使用 python 做到這一點? 謝謝。
您當前的示例顯示所有值似乎都遵循相同的格式,即Key:Value;
使用glob.glob()
遍歷所有文本文件名。 您可以使用islice()
准確讀取 7 行,然后將它們轉換為單行。 然后可以將其拆分為;
為您提供鍵值對列表。 然后可以在:
和strip()
上進一步拆分這些以刪除任何額外的空格。
最后使用itemgetter()
從結果列表中僅提取您需要的元素。
from itertools import islice, chain
from operator import itemgetter
import csv
import glob
import os
get = itemgetter(1, 3, 5, 9, 11, 13, 19, 21, 23, 17)
with open('log.csv', 'w', newline='') as f_output:
csv_output = csv.writer(f_output)
csv_output.writerow('Name,Sore,Time,Software Ver,Core Ver,AppID,Key,REG Date,Expiry,Filename'.split(','))
for filename in glob.glob('*.txt', recursive=True):
with open(filename) as f_input:
data = ''.join(islice(f_input, 0, 7)).replace('\n', '').split(';')
values = [v.strip() for v in chain.from_iterable(d.split(':', 1) for d in data)]
csv_output.writerow([*get(values), os.path.basename(filename)])
對於您的示例,這將為您提供log.csv
包含:
Name,Sore,Time,Software Ver,Core Ver,AppID,Key,REG Date,Expiry,Filename
321,100,1:09:308,21.0.0.0,21.0.0.0,0S0,A0000-abcde-Q0000-F0000-00H00,2/27/2021 1:16:34 PM,7/7/2024 12:00:00 AM,MapName MapName MapName,file1.txt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.