Вы можете использовать пакеты csv
и re
, чтобы найти нужные вам строки.
Читайте в файле, как вы показали.Я тестирую свой скип со следующим «текстовым файлом»
text = '''
CP# 1
V = -3.02132E+02
G = -5.15550E+12
K = -9.84693E+06
L = 1.16878E+06
CP# 2
V = 5.53209E+08
G = 6.06581E+08
K = -7.41506E+18
L = -9.87995E+02
CP# 3
V = 5.47807E+08
G = -5.03863E+00
K = -1.09701E+12
L = -5.30051E+09
'''
Теперь, когда у вас есть загруженный файл, используйте пакет re
, чтобы найти искомые совпадения.Вы можете использовать ссылку выше, чтобы узнать больше о синтаксисе.
h_matches = re.findall(r'CP#\s\d', text)
v_matches = re.findall(r'(?<=V\s=)\s+[0-9+-E]+', text)
g_matches = re.findall(r'(?<=G\s=)\s+[0-9+-E]+', text)
headers = [h for h in h_matches]
v_values = [m for m in v_matches]
g_values = [m for m in g_matches]
После того, как у вас есть все совпадения, используйте csv
, чтобы записать данные в файл CSV.
with open('example.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['header', 'V', 'G'])
for h, v, g in zip(headers, v_values, g_values):
writer.writerow([h, v, g])
Ниже приведен вывод в example.csv
header,V,G
CP# 1, -3.02132E+02, -5.15550E+12
CP# 2, 5.53209E+08, 6.06581E+08
CP# 3, 5.47807E+08, -5.03863E+00
Если вы хотите записать в существующий лист Excel, вы можете оформить заказ xlsxwriter