首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用regex的中有一个特殊字符时,在单词之间添加一个空格?

如何在使用regex的中有一个特殊字符时,在单词之间添加一个空格?
EN

Stack Overflow用户
提问于 2022-07-25 12:24:11
回答 1查看 34关注 0票数 1

我有一个由评论组成的数据,在单词之间有特殊的字符。我想加一个空格。

例如,

星星之火( NLP -> Spark)NLP机器-学习->机器-学习

下面是我的数据

代码语言:javascript
复制
temp = spark.createDataFrame([
    (0, "This is 5years of Spark)world 5-6"),
    (1, "I wish Java-DL could use case-classes"),
    (2, "Data-science is  cool"),
    (3, "Machine")
], ["id", "words"])


+---+-------------------------------------+
|id |words                                |
+---+-------------------------------------+
|0  |This is 5years of Spark)world 5-6    |
|1  |I wish Java-DL could use case-classes|
|2  |Data-science is  cool                |
|3  |Machine                              |
+---+-------------------------------------+

我使用了下面的代码来完成这个任务,但是它不起作用。

代码语言:javascript
复制
temp_1 = temp.withColumn('words', F.regexp_replace('words', r'(?<! )(?=[.,!?()\/\-\+\'])|(?<=[.,!?()\/\-\+\'])(?! )', '$1 $2 $3'))

期望产出:

代码语言:javascript
复制
+---+-----------------------------------------+
|id |words                                    |
+---+-----------------------------------------+
|0  |This is 5years of Spark ) world 5 - 6    |
|1  |I wish Java - DL could use case - classes|
|2  |Data - science is  cool                  |
|3  |Machine                                  |
+---+-----------------------------------------+
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-25 12:28:11

您可以使用

代码语言:javascript
复制
\b[^\w\s]\b|_

代之以$0。见regex演示

如果不认为下划线是一个特殊字符,只需使用\b[^\w\s]\b来匹配单词字符和空格字符之间的字符以外的任何字符。注意单词字符包括下划线。

如果两边都必须有字母或数字,请用(?<=[^\W_])[^\w\s](?=[^\W_])|_替换单词边界。只查找字母之间的特殊字符:(?<=[^\W\d_])[^\w\s](?=[^\W\d_])|_(?<=\p{L})[^\w\s](?=\p{L})|_

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73109192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档