繁体   English   中英

在文本文件(python)中的特定字符之间重复提取 substring

[英]Repeatedly extracting substring inbetween specific characters, in a text file (python)

我有几条数据存储在一个文本文件中。 我正在尝试将每种类型的数据提取到单独的列表中,以便我可以对它们进行 plot/制作各种数字。 有数以千计的值,所以专门这样做并不是一个真正的选择。 文本文件的一个示例是:

"G4WT7 > interaction in material = MATERIAL
G4WT7 > process PROCESSTYPE
G4WT7 > at position [um] = (x,y,z)
G4WT7 > with energy [keV] = 0.016
G4WT7 > track ID  and parent ID = ,a,b
G4WT7 > with mom dir = (x,y,z)
G4WT7 > number of secondaries= c
G4WT1 > interaction in material = MATERIAL
G4WT1 > process PROCESSTYPE
G4WT1 > at position [um] = (x,y,z)
G4WT1 > with energy [keV] = 0.032
G4WT1 > track ID  and parent ID = ,a,b
G4WT1 > with mom dir = (x,y,z)
G4WT1 > number of secondaries= c"

我想将字符串(例如“energy [keV] = so 0.016, 0.032 etc”之后的字符串)提取到列表中。 我希望能够与此类似地分离所有数据。

到目前为止,我尝试使用正则表达式,如下所示:

import re
file = open('file.txt')
textfile =file.read()
Energy = re.findall('[keV] = ;(.*)G', textfile)

但它只是生成一个空列表; [] 我是 python 的新手,如果答案很明显,我深表歉意,任何帮助将不胜感激。

你可能想避开方括号!

Energy = re.findall('\[keV\] = (.*)', text)

...或者要在保存端,您还可以使用re.escape确保所有字符都正确转义,例如:

Energy = re.findall(re.escape('[keV] = ') + '(.*)', text)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM