You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则表达式在Pythex可运行但pandas提取地址为空如何解决

问题原因

  • 正则未使用Python原始字符串(r前缀):你写的正则中包含\b转义标识,普通Python字符串会将\b解析为退格控制符,而非正则语法里的单词边界,直接导致匹配逻辑完全失效,这是返回结果全空的核心原因。
  • 单词边界逻辑存在隐患:多词组成的州名(如NORTH CAROLINA、NEW YORK)中间带有空格,原有正则的\b位置在部分场景下会出现匹配偏差。
  • findall返回结果为列表格式:直接赋值的话列内容会是列表类型,需要额外提取首个匹配结果才能得到字符串格式的地址。

解决方案

修正后代码

import pandas as pd

# 正则逻辑:
# 1. [0-9]{2,6} 匹配开头2-6位的门牌号数字
# 2. (?:\s+[A-Z0-9]+){2,10} 非捕获组,匹配2到10个空格+字母/数字组成的地址分段
# 3. \s+(?:FLORIDA|NORTH CAROLINA|NEW YORK) 匹配结尾的州名
pattern = r'[0-9]{2,6}(?:\s+[A-Z0-9]+){2,10}\s+(?:FLORIDA|NORTH CAROLINA|NEW YORK)'

# 提取首个匹配结果赋值给Address列
df['Address'] = df['Text'].str.findall(pattern).str[0]

运行上述代码后即可得到你预期的Address列输出。

内容的提问来源于stack exchange,提问作者Sandy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:54:07