Извлечение строки между указанными символами в Python - PullRequest
1 голос
/ 03 апреля 2010

Я новичок в регулярных выражениях, и у меня есть следующая строка:

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

Я пытаюсь извлечь текст Belyuen,NT,0801 и Larrakeyah,NT,0801 в python. У меня есть следующий код, который не работает:

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

т.е. Я хочу получить строку между символами :\ и \.

Ответы [ 3 ]

3 голосов
/ 03 апреля 2010

это похоже на правильную сериализацию 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
3 голосов
/ 03 апреля 2010

Не используйте регулярные выражения для этого. Кажется, это довольно странно разделенный набор строк JSON. Соедините их вместе и используйте модуль json для его декодирования.

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

(Обратите внимание, что модуль json является новым в Python2.6 - если у вас более низкая версия, загрузите и установите simplejson).

2 голосов
/ 03 апреля 2010

вам не нужно регулярное выражение

>>> 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']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...