在python中提取指定字符之间的字符串

时间:2010-04-03 13:34:50

标签: python regex

我是正则表达式的新手,我有以下字符串:

sequence = '["{\"First\":\"Belyuen,NT,0801\",\"Second\":\"Belyuen,NT,0801\"}","{\"First\":\"Larrakeyah,NT,0801\",\"Second\":\"Larrakeyah,NT,0801\"}"]'

我正在尝试在python中提取文本Belyuen,NT,0801Larrakeyah,NT,0801。我有以下代码无效:

re.search('\:\\"...\\', ''.join(sequence))

即。我想在字符:\\之间获取字符串。

3 个答案:

答案 0 :(得分:3)

不要使用正则表达式。它似乎是一组相当奇怪的JSON字符串。将它们连接在一起并使用json模块对其进行解码。

import json
sequence = '[%s]' % ','.join(sequence)
data = json.loads(sequence)
print data[0]['First'], data[0]['Second']

(注意json模块是Python2.6中的新功能 - 如果您的版本较低,请下载并安装simplejson)。

答案 1 :(得分:3)

它似乎是Python dict的正确序列化,你可以这样做:

>>> sequence = ["{\"First\":\"Belyuen,NT,0801\",\"Second\":\"Belyuen,NT,0801\"}","{\"First\":\"Larrakeyah,NT,0801\",\"Second\":\"Larrakeyah,NT,0801\"}"]
>>> import json
>>> for i in sequence:
    d = json.loads(i)
    print(d['First'])


Belyuen,NT,0801
Larrakeyah,NT,0801

答案 2 :(得分:2)

你不需要正则表达式

>>> sequence = ["{\"First\":\"Belyuen,NT,0801\",\"Second\":\"Belyuen,NT,0801\"}","{\"First\":\"Larrakeyah,NT,0801\",\"Second\":\"Larrakeyah,NT,0801\"}"]
>>> for item in sequence:
...  print eval(item).values()
...
['Belyuen,NT,0801', 'Belyuen,NT,0801']
['Larrakeyah,NT,0801', 'Larrakeyah,NT,0801']