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

アイテム、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("|") 関数を使用しようとしましたが、わかりません:

  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"

1 つのパラメーターの値を取得するには:

「&」で分割し、最初のパラメーターを取得します。

>>> 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 に答える