python - Python提取以索引开头的字符串直到字符
问题描述
假设我有一个变化不大的传入字符串:
" 1 |r|=1.2e10 |v|=2.4e10"
" 12 |r|=-2.3e10 |v|=3.5e-04"
"134 |r|= 3.2e10 |v|=4.3e05"
我需要提取数字(即 1.2e10、3.5e-04 等)...所以我想从 '|r|' 的末尾开始 并将所有字符抓取到它之后的 ' ' (空格)。'|v|' 相同
我一直在寻找这样的东西:从一个字符串中提取一个子字符串,该字符串从一个索引开始,到一个特定的字符结束......但还没有找到任何远程接近的东西。想法?
注意:添加了新场景,这是导致很多令人头疼的场景......
解决方案
为了保持优雅和通用,让我们使用split
:
- 首先,我们用 ' ' 分割成标记
- 然后我们找到它是否有等号并解析key-value
import re
sabich = "134 |r| = 3.2e10 |v|=4.3e05"
parts = sabich.split(' |')
values = {}
for p in parts:
if '=' in p:
k, v = p.split('=')
values[k.replace('|', '').strip()] = v.strip(' ')
# {'r': '3.2e10', 'v': '4.3e05'}
print(values)
这可以转换为单线:
import re
sabich = "134 |r| = 3.2e10 |v|=4.3e05"
values = {t[0].replace('|', '').strip() : t[1].strip(' ') for t in [tuple(p.split('=')) for p in sabich.split(' |') if '=' in p]}
# {'|r|': '1.2e10', '|v|': '2.4e10'}
print(values)
推荐阅读
- testing - 我们如何从 testcafe 自动化案例中生成的 url 中删除会话 ID
- javascript - 如何在 nextjs 中获取动态页面 html 输出?
- php - 如何在laravel的database.php文件中动态附加连接
- django - Django CustomUser 使 emailfield 成为参考
- agora.io - 如何使用 Agora.IO 视频 SDK 记录和稍后检索数据跟踪/消息(基于文本)?
- wordpress - 我想要最新的评论和 WordPress 中博客文章的缩略图
- java - Java 将时间转换为 iso_instant
- google-cloud-platform - 当任何数据属性值超过某个值时,如何在 BigQuery 中触发邮件通知?
- ffmpeg - 如何将两个 ffmpeg 查询合并到一个管道?
- c++ - 打印出三个字符串的 LCS(不是长度而是字符串本身)