Python3中replace('\n','')失效求助:网页文本处理异常
问题解决:BeautifulSoup提取文本后替换换行异常
你遇到的问题大概率是实际抓取到的文本包含非\n类型的换行符,或是处理顺序导致字符错乱,以下是可行的解决思路:
1. 替换所有类型的换行符
静态测试文本里只有\n,但网页中的换行可能是\r(Windows旧格式)或\r\n,只替换\n会遗漏其他换行符,导致后续字符拼接异常。用正则表达式一次性覆盖所有换行类字符:
import re correct_codes = soup.find_all('div', attrs={'id': re.compile(r'correctcode\d*')}) for correct_code in correct_codes: text = correct_code.text.strip() # 替换所有\n、\r、\r\n text = re.sub(r'[\n\r]+', '', text).replace(' ', '') print(text)
2. 调整文本处理顺序
你当前先删空格再删换行,可能会把换行前后的字符与空格混在一起处理,导致内容错乱。改成先处理换行,再清理多余空格:
correct_codes = soup.find_all('div', attrs={'id': re.compile(r'correctcode\d*')}) for correct_code in correct_codes: text = correct_code.text.strip() # 先删换行,再删多余空格 text = text.replace('\n', '').replace('\r', '').replace(' ', '') print(text)
3. 排查文本原始内容
如果上面两种方法没用,先打印文本的原始表示,查看是否存在特殊字符:
correct_codes = soup.find_all('div', attrs={'id': re.compile(r'correctcode\d*')}) for correct_code in correct_codes: text = correct_code.text.strip() # 打印原始字符表示,可直观看到所有转义字符 print(repr(text)) # 再尝试替换 text = re.sub(r'[\n\r]+', '', text).replace(' ', '') print(text)
通过repr(text)能清楚看到文本里的\r、\t或其他不可见控制字符,再针对性处理即可。
内容的提问来源于stack exchange,提问作者user18709667
相关产品推荐
相关产品推荐

