Python中如何处理“四在农家•美丽乡村”相关数据或文本?
在网上抓取的新闻,有时候会遇到这样的点,文字编码已经转换过了,但还是会报错 'gbk' codec can't encode character '\u2022' in position 20
不知道该如何处理这个点。系统 是 python3.4+sublime
Python中如何处理“四在农家•美丽乡村”相关数据或文本?
5 回复
转成 UTF-8 应该能解决啊
处理这类包含特殊字符(如中间点•)的文本,核心是正确编解码和统一清洗。直接上代码:
# 示例1:基础处理 - 确保读写时编码一致
text = "四在农家•美丽乡村"
print(f"原始文本: {text}")
print(f"UTF-8编码: {text.encode('utf-8')}")
print(f"长度: {len(text)}") # 注意:特殊字符可能被计为1个长度
# 示例2:文件读写处理
with open('data.txt', 'w', encoding='utf-8') as f:
f.write("四在农家•美丽乡村\n示范点•创建活动")
with open('data.txt', 'r', encoding='utf-8') as f:
content = f.read()
print(f"从文件读取: {content}")
# 示例3:文本清洗和标准化(如果需要移除或替换特殊字符)
import re
# 移除所有非中文、英文、数字的字符
cleaned = re.sub(r'[^\u4e00-\u9fa5a-zA-Z0-9]', '', text)
print(f"清洗后: {cleaned}")
# 或者替换特定字符
normalized = text.replace('•', '-')
print(f"标准化后: {normalized}")
# 示例4:数据库操作示例(使用sqlite3)
import sqlite3
conn = sqlite3.connect(':memory:')
conn.execute('CREATE TABLE projects (name TEXT)')
conn.execute('INSERT INTO projects VALUES (?)', (text,))
result = conn.execute('SELECT * FROM projects').fetchone()
print(f"从数据库检索: {result[0]}")
关键点:
- 始终明确指定
encoding='utf-8'进行文件操作 - 数据库操作时使用参数化查询自动处理编码
- 正则表达式
\u4e00-\u9fa5匹配中文字符范围 - 中间点
•在UTF-8中是合法字符,不需要特殊转义
简单总结: 统一用UTF-8编码,特殊字符按需清洗。
不 print 出来 是没事的。你的 windows stdout 不是 utf8 。
执行 py 脚本前先在 cmd 执行一下 chcp 65001
可能这个字符 gbk 没有收录,可以考虑用 GB18030

