如何读取文件并将使用关键字的某些数字复制到excel或另一个txt文件中?

时间:2019-04-03 16:29:13

标签: python excel readfile

我有一个文件,目前我只是手动将某些部分中的数字传输到excel中,希望将它们写入txt文件或直接写入excel。

原始文件是一个求和文件(虽然本质上只是一个txt文件)

通过文件的一部分,它具有多个CP,我想获得v =值和G =值。然后将它们放在txt文件的数组中,例如在文件中将其打印到一半以下:

enter image description here

  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)

1 个答案:

答案 0 :(得分:0)

您可以使用csvre包来查找所需的行。

按所示读取文件。我正在使用以下“文本文件”测试我的密码。

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