簡體   English   中英

Python:從有條件的字符串中提取 smth

[英]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))

這個想法是匹配regionRegionkraiKrai之前的任何大寫單詞,或者Respublikarespublika之后的大寫單詞。

觀看Python 演示 如果您只想匹配字母,請將\\w替換為[^\\W\\d_]

此處查看正則表達式演示

細節

  • \\b - 詞邊界
  • [AZ]\\w* - 大寫 ASCII 字母后跟 0+ 個單詞字符
  • \\s+ - 1+ 個空格
  • (?:[kK]rai|[rR]egion) - region , Region , kraiKrai
  • | - 或者
  • \\b - 詞邊界
  • [rR]espublika - Respublikarespublika
  • \\s+ - 1+ 個空格
  • [AZ]\\w* - 大寫 ASCII 字母后跟 0+ 個單詞字符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM