У меня есть объект, который выглядит как block = [{'id':'10001', 'date':'2016-01-11', 'text':'this is some text. grab 40'},{'id':'10002', 'date':'2014-03-12', 'text':'this is some more text. grab 60'}]
части доступа текста внутри объекта Python
Я хотел бы, чтобы захватить пункт в text
и переформатировать мой объект, так как это выглядит: block = [{'id':'10001', 'date':'2016-01-11', 'text':'this is some text. grab 40', 'grabbed': '40'},{'id':'10002', 'date':'2014-03-12', 'text':'this is some more text. grab 60', 'grabbed': '60'}]
Я попытался
for item in block:
if "grab" in item['text']:
m=re.search('grab (..)',line)
print m
но получил ошибку
Traceback (most recent call last): File "<stdin>", line 3, in <module> File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 146, in search
return _compile(pattern, flags).search(string) TypeError: expected string or buffer
Исправлено, спасибо. Если длина элемента, который я пытаюсь захватить, варьируется и может быть больше двух символов, так что выражение 'grab (..)' не всегда будет работать ... как я могу это приспособить? – nquestion
Итак, если вы пытаетесь захватить более двух элементов, вы можете изменить свое регулярное выражение так: (. *) -> соответствует нулю или не имеет символов (. +) -> соответствует одному или нескольким символам (. {x}) -> соответствует x экземплярам символов. Если вы читаете «regex cheat sheet» в google, вы найдете полезные руководства по синтаксису регулярных выражений. – patrick