2017-02-09 38 views
1

我正在處理一個大的.json文件,裏面裝滿了twitter bios,並且想要提取screen_names。爲了防止搜索也返回生物部分中提到的潛在用戶,僅提取每條線的第一個匹配是重要的。記事本++中使用的正則表達式搜索詞不能用於python

當我在記事本打開該文件++我可以使用下面的正則表達式來完成這一功能:

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

使用相同的蟒蛇或re.findall re.search不會導致任何的一部分火柴。

我對Python和正則表達式都是全新的,所以我相當肯定我沒有完全意識到所有必要的編碼。

非常感謝提前!

+3

Python're'模塊不支持'\ K'構造。 NPP使用Boost,而不是Python're'。在Python中,逐行讀取文件,並使用're.search'和'r'「screen_name」:\ s *「(\ w +)」'''模式並訪問組1的值。 –

+0

python中的反斜槓是特殊字符,因此您需要將它們轉義或使用原始字符串。 –

+0

如果它是您正在查看的'.json'文件,那麼在Python中使用['json'](https://docs.python.org/2/library/json.html)模塊可能更容易。 – 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」中每行的每一首匹配。