2

我有非常大的文本文件,格式如下:

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

item、ids 和 locations 的数量不固定,上面有 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("|") 函数从字符串中获取值,但我不知道:

  1. 如何处理字符串中存在的动态项数和
  2. 如何相应地匹配值。

任何帮助将不胜感激。

谢谢你。

4

2 回答 2

2
>>> 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']

然后你只需要以你喜欢的任何方式组合这些多个列表。

于 2012-08-01T20:58:50.640 回答
1

这应该工作,

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
于 2012-08-06T23:43:06.350 回答