gpt4 book ai didi

python - 有没有办法使用 'pattern' 来分解字符串

转载 作者:行者123 更新时间:2023-11-30 23:45:19 26 4
gpt4 key购买 nike

我有一个字符串:

mystring = "Foo: Bar (Titi) Foo-age: 50 Airplanes: 12:1 12:3 12:4 12:5 [...] Next Hop: LAX Origine ID: 49 Hop List 2 4 9 0 3 [...]"

有没有办法使用模式分割这个字符串,例如:

pattern = {"Foo", "Foo-age", "Airplanes", "Next Hop", "Origine ID", "Hop List"}

然后

mylist = somefunction(mystring , pattern)
print mylist
--> {"Foo":"Bar (Titi)","Foo-age" : 50, "Airplanes": ["12:1","12:3",...], ...}

这在Python中可能吗?

[编辑]

一些示例数据 - 带分隔符“,”的 5 列 csv 文件

col-1,col-2,Path: 9876 (IGP) Local-Pref: 310000   MED: 0 Communities: 1234:6 1234:95 1234:101 1234:202 1234:500 1234:903 1234:3369 1234:8000 1234:8002 1234:16925 9876:19827 Next Hop: x.x.127.151   Originator ID: x.x.155.144 Cluster List: 0.0.29.99 0.0.29.97 0.0.26.245 0.0.2.179 ,col-4,col-5

col-1,col-2,Path: 9876 (IGP) Local-Pref: 310000 MED: 0 Communities: 1234:3 1234:95 1234:101 1234:202 1234:13705 9876:19941 Next Hop: x.x.127.61 Originator ID: x.x.137.37 Cluster List: 0.0.29.99 0.0.29.97 0.0.1.195 ,col-4,col-5

col-1,col-2,Path: 9876 (IGP) Local-Pref: 310000 MED: 0 Communities: 1234:2 1234:95 1234:101 Next Hop: x.x.127.149 Originator ID: x.x.137.29 Cluster List: 0.0.29.99 0.0.29.98 0.0.2.240 ,col-4,col-5

col-1,col-2,Path: 9876 (IGP) Local-Pref: 310000 MED: 0 Communities: 1234:6 1234:95 1234:101 1234:202 1234:500 1234:903 1234:3369 1234:8000 1234:8002 1234:16924 9876:19827 Next Hop: x.x.127.151 Originator ID: x.x.155.144 Cluster List: 0.0.29.99 0.0.29.97 0.0.26.245 0.0.2.179 ,col-4,col-5

最佳答案

我认为这可以分两步完成。首先,您查找看起来像字段名称 (Foo-Bar:) 的内容,并在每次匹配之前插入一个“特殊”标记字符(例如 @)。其次,查找模式标记字段名称:数据并填充数据字典:

text = """
col-1,col-2,Path: 9876 (IGP) Local-Pref: 310000 MED: 0 Communities: 1234:6 1234:95 1234:101 1234:202 1234:500 1234:903 1234:3369 1234:8000 1234:8002 1234:16925 9876:19827 Next Hop: x.x.127.151 Originator ID: x.x.155.144 Cluster List: 0.0.29.99 0.0.29.97 0.0.26.245 0.0.2.179 ,col-4,col-5
"""

import re

text = re.sub(r'([A-Z][A-Za-z -]+:)', r'@\1', text)
data = {}
for m in re.finditer(r'@(.+?):([^,@]+)', text):
data[m.group(1)] = m.group(2).strip()

import pprint
pprint.pprint(data)

结果:

 {'Cluster List': '0.0.29.99 0.0.29.97 0.0.26.245 0.0.2.179',
'Communities': '1234:6 1234:95 1234:101 1234:202 1234:500 1234:903 1234:3369 1234:8000 1234:8002 1234:16925 9876:19827',
'Local-Pref': '310000',
'MED': '0',
'Next Hop': 'x.x.127.151',
'Originator ID': 'x.x.155.144',
'Path': '9876 (IGP)'}

关于python - 有没有办法使用 'pattern' 来分解字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9598499/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com