为什么在 pyspark 中英镑符号 (£) 转换为 â£?

问题描述 投票:0回答:1

我有一个字符串

N1 LTPO BABY FOOD 6 FOR £5
,我想使用正则表达式从中提取
6 FOR £5
。我正在使用 pyspark。 Regex101 告诉我
[0-9]*\sFOR\s£[0-9]*
应该可以工作(https://regex101.com/r/OWAA2k/1),但是如果我尝试在 pyspark 中使用它,我没有任何成功,以下代码返回零行:

import pyspark.sql.functions as funcs
print sc.version
mock_data = [('N1 LTPO BABY FOOD 6 FOR £5','b'),('foo','bar')]
schema = ['a','b']
mock_df = sqlContext.createDataFrame(data=mock_data, schema=schema)
mock_df = mock_df.filter(mock_df.a.rlike('[0-9]*\sFOR\s£[0-9]*'))
mock_df.show(truncate=False)

regex filters out

如果我将正则表达式稍微更改为

[0-9]*\sFOR\s*
,那么我想要的数据将被过滤到in,但请注意,井号的前缀为
Â

enter image description here

因此我可以将原来的正则表达式更改为

[0-9]*\sFOR\s£[0-9]*
并且它可以工作: enter image description here

我的问题是…为什么这个奇怪的字符

Â
出现在字符串中?为什么 pyspark 把它放在那里?我知道这与数据编码有关,但这不是我了解的很多,所以我希望有人可以向我解释它并让我意识到任何潜在的陷阱。

pyspark
1个回答
0
投票

同样的问题,你解决了吗?

© www.soinside.com 2019 - 2024. All rights reserved.