我有非常大的文本文件,其格式如下:
items=item1|item2|item3|item4&ids=18|117|34|315&locations=5|26|9|12#Characteristic_1#Describe Characteristic_1#http://example.com
items=item1|item2|item3|item4&ids=18|117|34|315&locations=5|26|9|12#Characteristic_2#Describe Characteristic_2#http://example.com
items=item1|item2|item3|item4&ids=18|117|34|315&locations=5|26|9|12#Characteristic_3#Describe Characteristic_3#http://example.com
项目、id 和位置的数量不固定,上面有 4 个值,但也有 1,2,3 或 5, 6 值,如下例所示:
items=item1&ids=18&locations=5#Characteristic_1#Describe Characteristic_1#http://example.com
items=item1|item2&ids=18|117&locations=5|26#Characteristic_1#Describe Characteristic_1#http://example.com
items=item1|item2|item3&ids=18|117|34&locations=5|26|9#Characteristic_3#Describe Characteristic_1#http://example.com
我想从这些数据中获取的是项目名称及其 ID,还有它的位置。像下面的格式:
item1,18,5
item2,117,26
item3,34,9
item4,315,12
我尝试使用 split("|") 函数从字符串中获取值,但我不明白:
- 如何处理字符串中存在的动态项目数
- 如何相应地相互匹配值。
任何帮助将不胜感激。
谢谢。
最佳答案
>>> s = "items=item1|item2|item3&ids=18|117|34&locations=5|26|9#Characteristic_3#Describe Characteristic_1#http://example.com"
获取一个参数的值:
用“&”分割并获取第一个参数。
>>> s.split('&')[0]
'items=item1|item2|item3'
用“=”拆分并获取值并删除键(即“项目”)
>>> s.split('&')[0].split('=')[1]
'item1|item2|item3'
用“|”分割该值
>>> s.split('&')[0].split('=')[1].split('|')
['item1', 'item2', 'item3']
类似地,您可以获得其他参数的值:
>>> s.split('&')[1].split('=')[1].split('|') # Notice the [1] in the first split
['18', '117', '34']
然后您只需按照您喜欢的方式组合这些多个列表即可。
关于Python提取动态文本格式的文本数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11767401/