我有非常大的文本文件,其格式如下:
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']
然后你只需要以任何你喜欢的方式组合这些多个列表
这应该可以工作,
item=item.split('#')[0]
item = item.split('&')
item[1]=item[1].lstrip('ids=')
item[2]=item[2].lstrip('locations=')
itemTemp = zip(item[0].split('|'),item[1].split('|'),item[2].split('|'))
print itemTemp