【发布时间】:2026-01-03 08:45:01
【问题描述】:
我需要找到一个可以从下面的字符串中提取城市名称的正则表达式。 字符串的顺序是餐厅名称、地址、城市、电话、菜式
Chinois on Main 2709 Main St. Santa Monica 310-392-9025 Pacific New WaveBenita's Frites 1433 Third St. Promenade Santa Monica 310-458-2889 Fast FoodIndo Cafe 10428 1/2 National Blvd. LA 310-815-1290 IndonesianDiaghilev 1020 N. San Vicente Blvd. W. Hollywood 310-854-1111 RussianJody Maroni's Sausage Kingdom 2011 Ocean Front Walk Venice 310-306-1995 Hot Dogs
我试过这个正则表达式,但它不起作用:
zagat['city'] = zagat['raw'].str.extract("""
((?<=Ave.|Rd.|St.|Blvd.|Dr.|Way.|Pl.|Ln.|Ct.|Beach|Way ).+(?=...-...-....))
""", expand=True)
你能帮忙吗?
【问题讨论】:
-
您不需要在 Pandas
extract中进行积极的后向观察,因为它只输出捕获的子字符串。 -
您需要转义点,
\.以匹配文字点,否则.表示任何字符。 -
试试
.extract(r'(?:(?:Ave|Rd|St|Blvd|Dr|Way|Pl|Ln|Ct)\.|Beach|Way|Walk)\s*(.+?)\s*\d{3}-\d{3}-\d{4}') -
非常感谢!