[英]Python: extract smth from string with condition
我有數據,看起來像
Respublika Tatarstan, Kazan'
Krasnodar Krai, Krasnodar
Tverskaya region, Tver
期望的輸出:
respublika Tatarstan
Krasnodar krai
Tverskaya region
我試着用
for addr in df.address.values.tolist():
re.findall(r'(\w+( krai| region))|((?:respublika )\w+)', addr)
但它返回元組列表並且在respublika
之后找不到對象。
您可以使用
import re
rx = r"\b[A-Z]\w*\s+(?:[kK]rai|[rR]egion)|\b[rR]espublika\s+[A-Z]\w*"
s = "Something in Respublika Tatarstan, Kazan\nWhat a Krasnodar Krai, Krasnodar I have seen!\nIn Tverskaya region, Tver, it is not so uncommon."
print(re.findall(rx, s))
這個想法是匹配region
、 Region
、 krai
或Krai
之前的任何大寫單詞,或者Respublika
或respublika
之后的大寫單詞。
觀看Python 演示。 如果您只想匹配字母,請將\\w
替換為[^\\W\\d_]
。
細節
\\b
- 詞邊界[AZ]\\w*
- 大寫 ASCII 字母后跟 0+ 個單詞字符\\s+
- 1+ 個空格(?:[kK]rai|[rR]egion)
- region
, Region
, krai
或Krai
|
- 或者\\b
- 詞邊界[rR]espublika
- Respublika
或respublika
\\s+
- 1+ 個空格[AZ]\\w*
- 大寫 ASCII 字母后跟 0+ 個單詞字符
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.