У меня, вероятно, отсутствует что-то очень основное здесь, но здесь идет:re.findall работает в консоли, но не в скрипте?
Я использую Python 2.7 и regex для идентификации цифр внутри строки.
В консоли, я печатаю:
>>> newstr = 'NukeNews/File_132.txt'
>>> int(re.findall(r'\d+',newstr)[0])
132
Что я ожидаю.
Однако, в скрипте, который я запускаю, у меня есть строки, хранящиеся в словаре, linedict. Я бегу этот сценарий:
news_id=[]
for line in line_vec:
print linedict[line]
newstr= linedict[line]
id_int = re.findall('r\d+',newstr)
print id_int
news_id.append(id_int)
Это длинный список, но результат выглядит:
NukeNews/File_132.txt
[]
Так что - правильная строка зарегистрирована, но это не соответствует ни на что.
Я сначала вызывал первый элемент в списке (для ввода консольного ввода int(re.findall(r'\d+',newstr)[0])
, но скрипт сообщает мне, что в регулярном выражении не было никаких экземпляров цифр в строке. вернуться:.
NukeNews/File_132.txt [ «132»]
Любая идея, почему это не работает, как ожидалось При попытке запуска re.match(r'/d+',newstr)
я получаю пустую группу (следуя примеру группы по https://docs.python.org/2/library/re.html)
Редактировать: Как указано, t его случай не быть осторожным с 'r'
и r'*'
. Я просто собираюсь оставить это на случай, если кто-то еще пойдет в Google «почему мое регулярное выражение работает в консоли, но не в скрипте» забывает проверить эту опечатку, как и я.
О, да, это унизительно. Спасибо. Это была именно эта проблема. :) – zainksasdf