读取数据时如何去除unicode?
How to remove unicode when reading data?
我有下面一行 Python 代码:
trans = data.map(lambda line: line.strip().split())
生成 Unicode 字符串,例如:
u'Hello',u'word'
我想要获取普通的 UTF-8 或 ASCII 字符串
'Hello','word'
我尝试将字符串转换为 UTF-8,例如
trans = data.map(lambda line: line.strip().split().encode("utf-8"))
或
trans = data.map(lambda line: line.strip().split().encode('ascii','ignore'))
但这给出了一个错误:
AttributeError: 'list' object has no attribute 'encode'
谁能告诉我该怎么做?
更新:
数据是scv文件,
trans 是 RDD
您的映射函数正在返回一个 unicode 列表,因此您可以只使用列表理解来遍历这些并将它们转换为字符串。
trans = data.map(lambda line: [str(word) for word in line.strip().split()])
尝试:
ascii = data.map(str)
这会将 data
中的每个元素从 unicode
转换为 str
运行 str(element)
每个元素。
为什么不简单地编码和分割:
data = sc.textFile("README.md")
trans = data.map(lambda x: x.encode("ascii", "ignore").split())
trans.first()
## ['#', 'Apache', 'Spark']
我有下面一行 Python 代码:
trans = data.map(lambda line: line.strip().split())
生成 Unicode 字符串,例如:
u'Hello',u'word'
我想要获取普通的 UTF-8 或 ASCII 字符串
'Hello','word'
我尝试将字符串转换为 UTF-8,例如
trans = data.map(lambda line: line.strip().split().encode("utf-8"))
或
trans = data.map(lambda line: line.strip().split().encode('ascii','ignore'))
但这给出了一个错误:
AttributeError: 'list' object has no attribute 'encode'
谁能告诉我该怎么做?
更新:
数据是scv文件, trans 是 RDD
您的映射函数正在返回一个 unicode 列表,因此您可以只使用列表理解来遍历这些并将它们转换为字符串。
trans = data.map(lambda line: [str(word) for word in line.strip().split()])
尝试:
ascii = data.map(str)
这会将 data
中的每个元素从 unicode
转换为 str
运行 str(element)
每个元素。
为什么不简单地编码和分割:
data = sc.textFile("README.md")
trans = data.map(lambda x: x.encode("ascii", "ignore").split())
trans.first()
## ['#', 'Apache', 'Spark']