python - 在文本文件中重复提取特定字符之间的子字符串(python)
问题描述
我有几条数据存储在一个文本文件中。我正在尝试将每种类型的数据提取到单独的列表中,以便我可以绘制它们/制作各种数字。有数以千计的值,所以专门这样做并不是一个真正的选择。文本文件的一个示例是:
"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)
推荐阅读
- android - 退出安卓打盹模式
- laravel - 使用 laravel 编辑用户信息
- python - 非活动图例的 Python 散景图例颜色
- google-apps-script - 脚本中的时区和 Google 表格中的时区与 Google 日历不同
- javascript - 如何使用 puppeteer 下载页面上的图像?
- javascript - 将数组元素与 for for 循环相乘
- javascript - 在 ASP.NET MVC 中使用 ajax 进行 CRUD 操作时,DataTable 插件不起作用
- go - 从 golang 应用程序发送字符串时出现意外的 StrComp 结果
- kubernetes - Nginx 入口控制器 modsecurity
- php - 如何获取内容
使用php从数组中的xml标记?