我有一个文件,目前我只是手动将某些部分中的数字传输到excel中,希望将它们写入txt文件或直接写入excel。
原始文件是一个求和文件(虽然本质上只是一个txt文件)
通过文件的一部分,它具有多个CP,我想获得v =值和G =值。然后将它们放在txt文件的数组中,例如在文件中将其打印到一半以下:
import os
from glob import glob
list_of_files = glob('*.sum') # get list of all .sum files
for file in list_of_files:
with open(file, 'r') as f:
content = f.read()
# not sure how to find the keyword 'i.e. G=' and print what is
# behind
g = content
f = open("excelsheet.txt", "w+")
f.write(content)
答案 0 :(得分:0)
按所示读取文件。我正在使用以下“文本文件”测试我的密码。
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