python - 在python中通过正则表达式解析字符串
问题描述
如何在 python 中解析这个字符串?
输入字符串:
someplace 2018:6:18:0 25.0114 95.2818 2.71164 66.8962 Entire grid contents are set to missing data
对此
输出数组:
['someplace','2018:6:18:0','25.0114','95.2818','2.71164','66.8962','Entire grid contents are set to missing data']
我已经尝试过,split(' ')
但由于不清楚子字符串之间有多少空格,并且在最后一个子字符串内可能有空格,所以这不起作用。
我需要正则表达式。
解决方案
如果您不提供sep字符,pythons split(sep=None, maxsplit=-1)
(doku)会将连续的空格视为一个空格并由这些空格分隔。您可以通过提供maxsplit值来限制要完成的拆分数量:
data = "someplace 2018:6:18:0 25.0114 95.2818 2.71164 66.8962 Entire grid contents are set to missing data"
spl = data.split(None,6) # dont give a split-char, use 6 splits at most
print(spl)
输出:
['someplace', '2018:6:18:0', '25.0114', '95.2818', '2.71164',
'66.8962', 'Entire grid contents are set to missing data']
只要第一个文本不包含任何空格,这将起作用。
如果第一个文本可能包含空格,您可以使用/优化此正则表达式解决方案:
import re
reg = re.findall(r"([^\d]+?) +?([\d:]+) +?([\d.]+) +?([\d.]+) +?([\d.]+) +?([\d.]+) +(.*)$",data)[0]
print(reg)
输出:
('someplace', '2018:6:18:0', '25.0114', '95.2818', '2.71164', '66.8962', 'Entire grid contents are set to missing data')
使用 fe https://regex101.com针对您的其他数据检查/证明正则表达式(点击链接,它在示例数据上使用上述正则表达式)
推荐阅读
- json - 在 PLJSON oracle 中解析字符串数组
- firebase - 在将文档添加到 Firestore 时,如何将其写入另一个名称不同的文档?
- javascript - 反应 JS onDragCapture 与 onDrag
- c# - .NET core 3.0 在启动控制台应用程序时获取 Invalid runtimeconfig.json
- django - 在每个 url 路径的末尾放置或不放置斜杠(“/”)
- mysql - MySQL 跳过 auto_increment 值
- python - 找到某个属性最高的实例
- elasticsearch - elasticsearch 7.3 休息客户端会发现新节点吗?
- python - 从 django ORM 中检索具有相关字段的查询
- postgresql - 使用 apache-nifi 将两列加在一起