Skip to main content
 首页 » 编程设计

python之从 Spark 中的文本中删除特定字符

2024年08月21日40linjiqin

我的 Spark 数据框列中有一些奇怪的字符。我想删除它。当我选择那个特定的列并执行 .show() 时,我看到它如下所示

主导技术公司寻求雄心勃勃、自信、自信、任性的销售人员来带领我们的组织进入下一个时代!如果您准备好在竞争激烈的环境中茁壮成长,那么这份工作就是您的最佳选择。 ¥ 卓越的口头和书面沟通技巧 ¥ 谈判和结束销售方面的丰富经验 ¥ 直言不讳 ¥ 在竞争环境中茁壮成长 ¥ 自力更生,能够在独立环境中取得成功 ¥ 管理客户组合 ¥ 积极结束销售以超过季度配额 ¥ 提供专业知识根据需要给客户 ¥ 带领公司进入新市场 |

您看到的字符是 ¥。

我编写了以下代码以将其从数据框的“描述”列中删除

from pyspark.sql.functions import udf 
 
charReplace=udf(lambda x: x.replace('¥','')) 
 
train_cleaned=train_triLabel.withColumn('dsescription',charReplace('description')) 
train_cleaned.show(2,truncate=False) 

然而它抛出一个错误:

File "/Users/i854319/spark/python/lib/pyspark.zip/pyspark/serializers.py", line 263, in dump_stream 
    vs = list(itertools.islice(iterator, batch)) 
  File "/Users/i854319/spark/python/pyspark/sql/functions.py", line 1563, in <lambda> 
    func = lambda _, it: map(lambda x: returnType.toInternal(f(*x)), it) 
  File "<ipython-input-32-864efe6f3257>", line 3, in <lambda> 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 0: ordinal not in range(128) 

但是,当我在测试字符串上执行此操作时,该字符会被替换方法识别。

s='hello ¥' 
print s 
s.replace('¥','') 
​ 
hello ¥ 
Out[37]: 
'hello ' 

知道我哪里出错了吗?

请您参考如下方法:

使用 Unicode 文字:

charReplace = udf(lambda x: x.replace(u'¥',''))