Python findall, регулярное выражение

У меня есть этот текст:

  u'times_viewed': 12268,
  u'url': u'/photo/79169307/30-seconds-light',
  u'user': {u'affection': 63962,

Как я могу просто получить эту строку: "/photo/79169307/30-seconds-light"?

Я пытаюсь использовать регулярное выражение и findall:

list = re.findall(‘u‘url‘: u‘/photo/"([^"]*)"‘, text)

но не пойдет.


person EspenG    schedule 10.08.2014    source источник
comment
Вы пытались прочитать свою строку как json?   -  person Casimir et Hippolyte    schedule 10.08.2014
comment
Как вы пытались? Покажите нам свое регулярное выражение.   -  person    schedule 10.08.2014
comment
Это похоже на вывод из структуры данных Python. Если это так, может быть, попробовать: object_name['url'] вместо того, чтобы распечатывать? Если нет, то не могли бы вы опубликовать соответствующую часть вашего неисправного кода?   -  person vch    schedule 10.08.2014
comment
Не используйте list в качестве имени. это встроенная функция.   -  person    schedule 10.08.2014
comment
Вы действительно используете акценты вместо кавычек/апострофов?   -  person xZise    schedule 10.08.2014


Ответы (1)


Я предполагаю, что под «это не пойдет» вы имеете в виду, что вы получаете синтаксическую ошибку, что и должно быть. Здесь:

list=re.findall(‘u‘url‘: u‘/photo/"([^"]*)"‘,text)

вы используете ", когда имеете в виду '. Это вызывает синтаксическую ошибку, поскольку " закрывает строку, которую вы пытаетесь передать re.findall. Пытаться:

list_ = re.findall("u'url': u'/photo/([^']*)'", text)

Кроме того, это не захватит текст после photo, поэтому вам нужно будет добавить больше скобок:

list_ = re.findall("u'url': u'(/photo/([^']*))'", text)

и теперь list_.group(1) должен содержать вашу строку.

Кроме того, похоже, что вы имеете дело с JSON. Лучшим подходом может быть:

import json
json.loads(text)
list_ = text['url']
person Patrick Collins    schedule 10.08.2014
comment
К вашему сведению: регулярные выражения должны быть закрыты кавычками: re.findall("u'url': u'/photo/([^']*)'", text) и "u'url': u'(/photo/([^']*))'" - person xZise; 10.08.2014
comment
@xZise Думаю, я исправил все опечатки. Дайте мне знать, если есть что-то еще, что я пропустил. - person Patrick Collins; 10.08.2014