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

Python中使用Spark统计波斯语文本单词遇字符编码异常如何解决

解决PySpark统计波斯语文本单词计数的编码问题

问题根源

  • 逻辑错误:words = words.flatMap(lambda x : x[0]) 这行代码会把拆分好的每个单词截断为第一个字符,完全无法实现单词计数的需求
  • 编码过滤:cleanWord = word.encode("ascii","ignore") 强制把所有字符转ASCII编码,波斯语属于非ASCII字符,会被直接过滤掉,这是波斯语无法统计的核心原因
  • 读文件未指定编码:PySpark读取文本时未显式指定UTF-8编码,可能出现乱码导致后续处理异常

修复后可正常统计波斯语的代码

from pyspark import SparkConf,SparkContext

conf = SparkConf().setMaster("local").setAppName("TestSpark")
sc = SparkContext(conf= conf)

# 读取文件时显式指定UTF-8编码,保证波斯语正确解码
input = sc.textFile("c:\\spark\\test_text.txt", use_unicode=True, encoding='utf-8')
# 按空格拆分单词,删除原来错误的取单个字符的操作
words = input.flatMap(lambda x : x.split())
wordsCount = words.countByValue()

# 直接输出原字符,不需要做ASCII编码转换
for word, count in wordsCount.items():
    print(f"{word} {count}")

注意事项

如果运行时控制台输出波斯语为乱码,需要调整控制台的默认编码为UTF-8即可正常显示。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:36:01