如何在Pandas DataFrame列中提取所有带<li>标签的子串?
解决Pandas提取所有标签及内容的问题
要提取DataFrame列中所有<li>与</li>标签及其内容并拼接成字符串,推荐使用正则表达式的re.findall方法,它能匹配所有符合规则的实例并保留标签。
修正后的代码示例
import pandas as pd import re data = { 'ID': ['1', '2'], 'Description': ['blah blah <li>Point 1</li>blah blah<li>Point 2</li>blah blah blah', 'blah<li>Point1</li>blah<li>Point 2</li>']} df = pd.DataFrame(data) def extract_li_tags(text): # 非贪婪匹配所有<li>...</li>内容,包含标签本身 li_matches = re.findall(r'<li>.*?</li>', text, re.DOTALL) return ''.join(li_matches) df['output'] = df['Description'].apply(extract_li_tags) print(df)
代码说明
- 正则表达式
r'<li>.*?</li>':<li>和</li>精准匹配标签边界.*?采用非贪婪模式,确保匹配到最近的</li>,避免一次性匹配到文本末尾的</li>re.DOTALL参数让.能匹配换行符,兼容包含换行的<li>内容
re.findall会返回所有匹配的列表,用''.join()将列表拼接成连续字符串,得到期望的输出格式
运行结果
ID Description output 0 1 blah blah <li>Point 1</li>blah blah<li>Point 2... <li>Point 1</li><li>Point 2</li> 1 2 blah<li>Point1</li>blah<li>Point 2</li> <li>Point1</li><li>Point 2</li>
内容的提问来源于stack exchange,提问作者Lee Roy
相关产品推荐
相关产品推荐

