Python Regex从数据结构中提取多个数据

时间:2013-10-17 13:12:35

标签: python regex beautifulsoup mechanize

我需要一个正则表达式来将tidbits从以下数据结构中拉出来。此数据位于javascript变量中。我正在使用BeautifulSoup和Mechanize来发出请求并解析页面但是我没有看到如何在没有正则表达式的情况下获得我需要的东西。更多细节如下。

原始数据:

var d = [[909.0546875,842.3125,32429,'TownID: 32429','GREY','circle_grey.png',970,'goldpimp\'s city','','N/A'],[1434.8890625,1365.41484375,32143,'TownID: 32143','GREY','circle_grey.png',899,'1..','','N/A'],[1553.92265625,1117.43046875,32326,'TownID: 32326','GREY','circle_grey.png',522,'Avacyns Pantheon','','N/A'],[1305.17265625,1328.6421875,28927,'TownID: 28927','GREY','circle_grey.png',3554,'Furiocity','','N/A'],...(cont.)

例如,在第一行,我需要提取TownID: 32429970goldpimp\'s city

我需要为整个数据结构执行此操作以获取每个townID和相关信息。对不起新手问题,但正则表达式确实让我的大脑震惊。

1 个答案:

答案 0 :(得分:2)

d是一个列表,您可以通过索引访问列表。那么,为什么正则表达式呢?你不需要它。 为了得到你的结果:

for city in d:
  print "%s %s %s" % (city[3], city[6], city[7])

print语句在控制台中打印文本。每个%s将使用右侧组中的字符串替换(按顺序)(第一个%s将替换为city[3],第二个city[6]替换,第三个{{1} }})。

修改

好的,如果city[7]来自Javascript源,则需要使用d转换为Python数据,将其结果存储在变量中并使用eariler方法进行访问(请参阅有关Python的json.loads模块here用于2.7和here用于3.3)。