如何使用Regex从CSV的description列HTML内容中提取td标签内ID值
问题排查
你当前的正则写法存在三个错误导致匹配不到结果:
^和$是正则中匹配整个字符串开头、结尾的标识符,而你要提取的<td>片段在HTML文本的中间位置,自然无法匹配[A-Z0-9]只能匹配单个大写字母或数字,你要匹配的是多个连续的大写字母+数字组合,需要加上量词+表示至少匹配1次,即写成[A-Z0-9]+- 没有考虑td标签前后可能存在的换行、空白字符影响
修正后的代码
提取td内的ID内容(直接得到F00Y009)
import pandas import re df = pandas.read_csv("替换为你的CSV文件实际路径") # 正则用括号捕获需要的ID内容 pattern = r"<td>([A-Z0-9]+)</td>" def extract_target(desc_text): match_res = re.search(pattern, desc_text) # 匹配到就返回结果,没匹配到返回空值 return match_res.group(1) if match_res else None # 新增列存储提取结果 df["extracted_id"] = df["description"].apply(extract_target) # 打印第一行的结果验证 print(df["extracted_id"][0])
提取完整的td标签内容(得到<td>F00Y009</td>,匹配你的期望输出)
只需要把正则规则调整为:
pattern = r"(<td>[A-Z0-9]+</td>)"
然后extract_target函数里返回match_res.group(1)即可。
内容的提问来源于stack exchange,提问作者Sabra
相关产品推荐
相关产品推荐

