将具有多个列表/数组的一个字符串转换为单独的列表

时间:2013-03-19 21:21:05

标签: python xml elementtree plaintext

标题很糟糕。这就是我的意思。我正在使用Wolfram | Alpha的API。在解析它时,我得到了这些可怕的字符串,就像这样(通过查询“蜘蛛侠”):

  

“年|标题|媒体1962 |惊人的幻想#15 |漫画书1967 |蜘蛛侠|动画> 1977 |惊人的蜘蛛侠|电视1978 | Questprobe#2蜘蛛侠|视频游戏2002> |蜘蛛侠|电影“

这实际上是一个字符串表示应该是这样的列表():

  

[年份,职称,中等]

     

[1962,Amazing Fantasy#15,漫画书]

     

[1967,蜘蛛侠,电子游戏]

     

[2002,蜘蛛侠,电影]

我可以很容易地把它分成一个大的列表......但我想不出一个简单的方法让它们像它们应该的那样进入列表(如上所示)。除了转换为大型列表之外的任何建议,解析列表,通过创建一个新的列表将它们分成每个第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++

1 个答案:

答案 0 :(得分: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')]