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

如何让findAll('dt')不返回换行符?解决S&P500代码换行问题

解决方法

一、处理<td>标签文本中的换行符

  1. 最简便的方式:用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')]
    
  2. 结合正则在查找阶段处理文本
    如果你一定要在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()的参数简化操作:

  1. 简便处理
    dt_text = row.find('dt').get_text(strip=True)
    # 批量处理所有<dt>标签
    dt_texts = [dt.get_text(strip=True) for dt in row.findAll('dt')]
    
  2. 正则处理方式
    import re
    processed_dts = [re.sub(r'\n', '', dt.text) for dt in row.findAll('dt')]
    

内容的提问来源于stack exchange,提问作者Llorenç Mairal Miquel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:30:53