2017-02-09 9 views
1

Я работаю с большим .json, заполненным биографией twitter и хотел бы извлечь screen_names. Чтобы исключить, что поиск также возвращает потенциальных пользователей, упомянутых в разделе bio, важно только извлечь первое совпадение каждой строки.Поисковый запрос регулярного выражения, используемый в Notepad ++, не работает с python

Когда я открываю файл в Notepad ++ можно использовать следующее регулярное выражение, чтобы сделать именно это:

(^.*?)\K"screen_name": "(\w+)" 

Используя такой же, как часть re.findall или re.search в питоне не приводит к какой-либо Матчи.

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

Большое спасибо заранее!

+3

Python 're' модуль не поддерживает конструкцию' \ K'. АЭС использует Boost, а не Python 're'. В Python прочитайте файл по строкам и используйте 're.search' с символом' r '"screen_name": \ s * "(\ w +)"' 'и получите доступ к значению группы 1. –

+0

Обратные косые черты в python - это специальные символы, поэтому вам нужно избегать их или использовать необработанную строку. –

+0

, если это файл '.json', на который вы смотрите, может быть проще использовать модуль [' json'] (https://docs.python.org/2/library/json.html) в Python. – asongtoruin

ответ

1

Как было отмечено другими пользователями Python и блокнота используют различные коды поиска, и так, чтобы достичь желаемого результата моего я разворачивал следующий код:

import re 
    regex=re.compile(r'"screen_name":\s*"(\w+)"') 
    with open("followers.json", "r") as f: 
    for line in f: 
     output=regex.search(line) 
     with open("followers.txt", "a") as outp: 
      outp.write(output.group(1)+"\n") 

Это будет анализировать указанный вами файл .json, прочитать его построчно и сохранить каждое первое соответствие каждой строки в файле «followers.txt».