0

タイトルがひどい。これが私の言いたいことです。Wolfram|Alpha の API を使用しています。そしてそれを解析している間、私は次のようなひどい文字列を取得します(「スパイダーマン」を照会することにより):

「年 | タイトル | 媒体 1962 | アメイジング・ファンタジー #15 | コミックブック 1967 | スパイダーマン | アニメーション > 1977 | アメイジング・スパイダーマン | テレビ 1978 | クエストプローブ #2 スパイダーマン | ビデオゲーム 2002 > | スパイダーマン |映画"

そして、これは実際には this() のようなリストであるべきものの文字列表現です:

[年、タイトル、媒体]

[1962年、アメージングファンタジー#15、コミックブック]

[1967年、スパイダーマン、ビデオゲーム]

[2002年、スパイダーマン、映画]

これを 1 つの大きなリストに簡単に分割することはできますが、本来あるべき (上に示した) ようにそれらをリストに入れる簡単な方法が思い浮かびません。大きなリストへの変換、リストの解析、反復する 3 番目の項目ごとに新しいリストを作成することによるリストのリストへの分割以外の提案はありますか?

私のアイデアの例(長い道のり):

listA = list()
listA = textRepresentation.split("|")
listB = list()
listC = list()
i = 1
for item in listA:
  if(i == 3):
    listB.append(listC)
    i = 1
  else:
    listC.append(item)
    i++
4

1 に答える 1

2
import re
zip(*[(i.strip() for i in re.split('(\d{4})|\||>', text) if i and i.strip())]*3)

アウト:

[('year', 'title', 'medium'),
 ('1962', 'Amazing Fantasy #15', 'comic book'),
 ('1967', 'Spider-Man', 'animation'),
 ('1977', 'The Amazing Spider-Man', 'television'),
 ('1978', 'Questprobe #2 Spider-Man', 'video game'),
 ('2002', 'Spider-Man', 'movie')]
于 2013-03-19T21:36:23.033 に答える