您好请参阅以前解决的帖子下面的链接。
Copy specific lines from text files into excel
此VBA代码允许我打开文件夹中的所有文本文件,并将特定行加载到Excel电子表格中。
但是,我现在正在处理更大的文件和更多文件。使用VBA不再是一个选项,因为它需要太长时间以及如何限制数据。
我想知道我是否有任何现有的python代码可以从每个数据文件中提取和指定行,并保存为新文档或将其自身保存为当前文件名。
示例代码:
DATASET UNSTRUCTURED_GRID
POINTS 5 float
0.096853 0.000000 0.111997
0.096853 -0.003500 0.111997
0.096890 0.000000 0.084015
0.096853 -0.003500 0.111997
0.096890 -0.003500 0.084015
CELL_DATA 5
SCALARS pressure float 1
LOOKUP_TABLE default
-0.000000
-0.000000
-3.000000
-2.000000
-6.000000
任何关于此的提示都会受到更高的评价。谢谢, 乔恩
答案 0 :(得分:0)
试试这个:
counter=0
with open(filename, 'w') as infile:
for line in infile:
counter+=1
if line.split(' ')[0]=='CELL_DATA':
i=counter+3
j=line.split(' ')[1]+1
break
此部分找到应该从中开始检索数据的行。那么你可以用数据做任何你喜欢的事情。例如:
data=[]
for line in infile[i:i+j]:
data.append(line)
并将数据保存到某处只需使用python选项写入excel或任何其他文件。 祝你好运!
答案 1 :(得分:0)
可以试试这个:
# use python 3.6
from pathlib import Path
txt_file_content = """DATASET UNSTRUCTURED_GRID
POINTS 5 float
0.096853 0.000000 0.111997
0.096853 -0.003500 0.111997
0.096890 0.000000 0.084015
0.096853 -0.003500 0.111997
0.096890 -0.003500 0.084015
CELL_DATA 5
SCALARS pressure float 1
LOOKUP_TABLE default
-0.000000
-0.000000
-3.000000
-2.000000
-6.000000"""
# creating sample file
Path('sample.txt').write_text(txt_file_content)
上面的代码创建一个示例文件,然后解析它:
# read a file back, itrate over many files if needed
doc = Path('sample.txt').read_text()
# NOTE:
# you can walk over *.txt files in specific fodler with
# https://docs.python.org/3/library/glob.html#glob.glob
# assume the disired text block is
# (1) always after 'LOOKUP_TABLE default'
# (2) at the end of txt file
last_text_segment = doc.split('LOOKUP_TABLE default')[1]
values = [float(x) for x in last_text_segment.split('\n') if x]
# alternatively as a function:
def extract_pressure(filename):
doc = Path(filename).read_text()
last_text_segment = doc.split('LOOKUP_TABLE default')[1]
return [float(x) for x in last_text_segment.split('\n') if x]
您可能希望将数据汇总到pandas
数据框,以便使用它进行进一步的数值运算。