gpt4 book ai didi

python - 将文件中的 block 解析到Python列表而不换行

转载 作者:行者123 更新时间:2023-12-01 05:50:26 24 4
gpt4 key购买 nike

我在一个包含许多内容的通用文件中有一个特定的内容 block ,该文件是任意长的,可以包含任何字符,每行以空格开头,并且在某些文本文件中具有以下形式:

 1\1\GINC-NODE9999\Scan\...
... ... ... ... ... ... ...
... ... ... ... ...\HF=-568
.8880019,-568.2343213, -568
.2343432, ... , -586.328492
1\RMSD=...

我对位于 \HF=\RMSD= 之间的特定序列感兴趣我想将这些数字放入 Python 列表中。这个序列只是一系列以逗号分隔的数字,但是,这些数字可以滚动到第二行。另外,\HF=\RMSD 可能会因滚动到换行符而被破坏。

当前的努力

我目前有以下内容:

    with open(infile) as data:
d1 = []
start = '\\HF'
end = 'RMSD'
should_append = False
for line in data:
if start in line:
data = line[len(start):]
d1.append(data)
should_append=True
elif end in line:
should_append = False
break
elif should_append:
d1.append(line)

输出以下列表

['.6184082129,7.5129238742\\\\Version=EM64L-G09RevC.01\\
State=1-A\\HF=-568\n', ' .8880019,-568.8879907,-568.8879686,
-568.887937,-\n']

问题是我不仅在整个过程中都有换行符,而且我还保留了比应有的更多的数据。此外,滚动到其他行的数字在列表中都有自己的位置。我需要它看起来像

['-568.8880019', '-568.8879907', ... ]

最佳答案

多行非贪婪正则表达式可用于提取位于\HF= 和\RMSD= 之间的文本。提取文本后,应该很容易将其标记为组成数字

import re
import os
pattern = r'''\HF=(.*?)\RMSD='''
pat = re.compile(pattern, re.DOTALL)
for number in pat.finditer(open('file.txt').read()):
print number.group(1).replace(os.linesep, '').replace(' ', '').strip(r'''\\''')
...
-568 .8880019,-568.2343213, -568 .2343432, ... , -586.328492 1\

关于python - 将文件中的 block 解析到Python列表而不换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14524848/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com