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

Python 2.7+BeautifulSoup爬取非ASCII字符:去除€或提取非ASCII字符

解决Python 2.7 Windows环境下BeautifulSoup爬取欧元符号的处理与打印问题

嘿,我来帮你搞定这个问题!在Python2.7的Windows环境里,处理非ASCII字符确实容易踩编码坑,我分两部分给你解决方案:

一、提取目标数字文本(移除欧元符号)

这里有几种简单可靠的方法,你可以根据需求选择:

方法1:直接字符串替换(最直观)

先把爬取到的字符串转成unicode类型(Python2里一定要注意区分str和unicode),然后替换掉欧元符号:

# 替换成你实际的BeautifulSoup提取代码
raw_text = item.find_all(...)[0].text  
# 假设网页编码是UTF-8,根据实际页面编码调整解码方式
unicode_text = raw_text.decode('utf-8')  
# 移除欧元符号和后面的空格,得到纯数字文本
cleaned_text = unicode_text.replace(u'€ ', u'')  

方法2:正则表达式提取数字部分

如果担心欧元符号的位置或格式有变化,用正则匹配数字和逗号更稳妥:

import re

raw_text = item.find_all(...)[0].text
unicode_text = raw_text.decode('utf-8')
# 匹配所有包含数字和逗号的片段,取第一个结果
cleaned_text = re.findall(r'[\d,]+', unicode_text)[0]

方法3:过滤允许的字符

只保留数字和逗号,自动排除其他符号:

raw_text = item.find_all(...)[0].text
unicode_text = raw_text.decode('utf-8')
# 筛选出数字和逗号字符
cleaned_text = ''.join(c for c in unicode_text if c.isdecimal() or c == ',')

二、解决Windows控制台打印非ASCII字符报错问题

Windows默认控制台编码是GBK,欧元符号不在GBK编码范围内,直接打印会报错,试试这几个方案:

方案1:编码转换时忽略/替换无法显示的字符

把unicode文本转成GBK编码,遇到无法编码的字符直接忽略或替换:

# 忽略无法编码的字符
print(cleaned_text.encode('gbk', 'ignore'))
# 把无法编码的字符替换成问号
print(cleaned_text.encode('gbk', 'replace'))

方案2:切换控制台编码为UTF-8

  1. 先在CMD窗口执行命令:chcp 65001(设置控制台代码页为UTF-8)
  2. 然后在Python代码里用UTF-8编码输出:
import sys
sys.stdout.write(cleaned_text.encode('utf-8') + '\n')

方案3:使用第三方库支持Unicode打印

安装win_unicode_console库,它能让Windows控制台直接支持Unicode输出:

  1. 安装命令:pip install win_unicode_console
  2. 代码开头导入并启用:
import win_unicode_console
win_unicode_console.enable()

# 之后直接打印unicode字符串就不会报错了
print(cleaned_text)

内容的提问来源于stack exchange,提问作者Stephinext

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:53:18