python - 如何在python的文本文件中提取两个字符串之间的值?
问题描述
假设我有一个文本文件,其中在两个字符串之间生成数据。现在,我想从文本文件中提取数据。谁能帮我在这里提取数据?我已尝试使用以下代码,但它不起作用。
TEXT FILE
<velocity> 5 "momentum1 |x_value@lin |y_value@log"
+1.0000000e+00 +1.5000000e+00 +1.8060150 +0.0000000
+1.5000000e+00 +2.5000000e+00 +0.0000000 +0.0000000
+2.5000000e+00 +3.5000000e+00 +0.0000000 +0.0000000
+3.0000000e+00 +4.5000000e+00 +0.0000000 +0.0000000
+3.5000000e+00 +5.5000000e+00 +0.0000000 +0.0000000
<\velocity>
<velocity> 5 "momentum2 |x_value@lin |y_value@log"
.
. datas
.
.
.
<\velocity>
import numpy as np
import matplotlib
with open('mydata.txt') as infile, open('momentum1.txt', 'w') as outfile:
currentstate = False
for line in infile:
if line.strip() == "<velocity> 5 momentum1 |x_value@lin |y_value@log":
currentstate = True
continue
elif line.strip() == "<\velocity>":
currentstate = False
continue
elif currentstate:
outfile.write(line)
解决方案
您也可以将其读取为单个字符串,然后可能使用拆分语句?例如:
import re
values = []
with open('mydata.txt') as infile, open('momentum1.txt', 'w') as outfile:
currentstate = False
for line in str(infile):
for y in str(line).split(' '):
if re.search('+', y):
values.append(y)
然后,您可以选择如何输出它,使用连接语句,或者只是一个循环。
推荐阅读
- python - 从站点抓取数据首先返回数据,但是当我再次运行代码时,它返回 None 对象
- r - 按模式匹配向量
- azure - 将日志分析工作区添加到 Azure VM,而不替换现有工作区
- api - 如何将 HTTP 状态代码从服务传递到 quarkus 中的控制器?
- rust - 有没有办法可以将视频帧从 GStreamer 转换为 SkImage 实例以在 Skia 中使用?
- javascript - 关于Javascript Iterator中执行顺序的问题
- json - 如何在 Azure 函数中引用 json 文件
- android - 如何使可点击容器内的子视图不可点击
- performance - Apache Ignite 2.9.0 性能
- javascript - 使用Selector,并正确切换数据片以避免过度减速