如何让findAll('dt')不返回换行符?解决S&P500代码换行问题
解决方法
一、处理<td>标签文本中的换行符
最简便的方式:用
get_text()自带参数
BeautifulSoup的get_text()方法支持strip=True参数,会自动去除文本前后的空白字符(包括\n、空格、制表符等),还能合并内部冗余空白,完全不用额外循环或正则:# 替代 row.findAll('td')[0].text ticker = row.find('td').get_text(strip=True)批量处理所有
<td>的文本:td_texts = [td.get_text(strip=True) for td in row.findAll('td')]结合正则在查找阶段处理文本
如果你一定要在findAll过程中结合正则处理,可以用列表推导式配合正则替换直接清理文本:import re # 去除文本中的所有换行符 processed_tds = [re.sub(r'\n', '', td.text) for td in row.findAll('td')] # 若要同时去掉所有空白字符(换行、空格、制表符等) processed_tds = [re.sub(r'\s+', '', td.text) for td in row.findAll('td')]要是你需要筛选文本不含换行的
<td>标签,才用findAll的正则过滤参数:import re filtered_tds = row.findAll('td', text=re.compile(r'[^\n]+'))
二、处理<dt>标签文本中的换行符
逻辑和<td>完全一致,优先用get_text()的参数简化操作:
- 简便处理
dt_text = row.find('dt').get_text(strip=True) # 批量处理所有<dt>标签 dt_texts = [dt.get_text(strip=True) for dt in row.findAll('dt')] - 正则处理方式
import re processed_dts = [re.sub(r'\n', '', dt.text) for dt in row.findAll('dt')]
内容的提问来源于stack exchange,提问作者Llorenç Mairal Miquel
相关产品推荐
相关产品推荐

