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

1 投票
3 回答
945 浏览
提问于 2025-04-15 21:11

我刚接触正则表达式,手头有一个字符串:

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 个回答

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']
3

这看起来像是对Python字典的正确序列化,你可以直接这样做:

>>> 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
3

别用正则表达式来处理这个。看起来这些JSON字符串被分割得很奇怪。把它们重新拼接在一起,然后用json模块来解码。

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

(注意,json模块是在Python2.6中新增的。如果你用的是更低版本,记得下载并安装simplejson。)

撰写回答