Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python正则表达式-删除特殊字符但保留撇号_Python_Regex - Fatal编程技术网

Python正则表达式-删除特殊字符但保留撇号

Python正则表达式-删除特殊字符但保留撇号,python,regex,Python,Regex,我正在尝试从某些文本中删除所有特殊字符,以下是我的正则表达式: pattern = re.compile('[\W_]+', re.UNICODE) words = str(pattern.sub(' ', words)) 超级简单,但不幸的是,它在使用撇号(单引号)时会引起问题。例如,如果我有一个单词“not”,那么这个代码将返回“dods” 有没有办法修改这个正则表达式,这样它就不会在这样的情况下删除撇号 编辑:以下是我想要的: 应该是: 这不意味着它在技术上可行吗 我能够使用这个正则表达

我正在尝试从某些文本中删除所有特殊字符,以下是我的正则表达式:

pattern = re.compile('[\W_]+', re.UNICODE)
words = str(pattern.sub(' ', words))
超级简单,但不幸的是,它在使用撇号(单引号)时会引起问题。例如,如果我有一个单词“not”,那么这个代码将返回“dods”

有没有办法修改这个正则表达式,这样它就不会在这样的情况下删除撇号

编辑:以下是我想要的:

应该是:

这不意味着它在技术上可行吗


我能够使用这个正则表达式将您的示例解析为一个单词列表:
[a-z]*'?[a-z]+

然后你可以用空格把列表中的元素连接起来。

像这样吗

>>> pattern=re.compile("[^\w']")
>>> pattern.sub(' ', "doesn't it rain today?")
"doesn't it rain today "
如果还应过滤掉下划线:

>>> re.compile("[^\w']|_").sub(" ","doesn't this _technically_ means it works? naïve I am ...")
"doesn't this  technically  means it works  naïve I am    "
怎么样

re.sub(r"[^\w' ]", "", "doesn't this mean it -technically- works?")
([^\w']||)+
怎么样

请注意,这对以下情况不起作用:

doesn't this mean it 'technically' works?

这可能不完全是您想要的。

首先,您需要定义什么是“特殊字符”。所有内容都被[\W]+删除。我将编辑我的文章以使其更清晰。也许你想做一些比最后用空格替换非ascii字符更高级的事情?:-)这个问题有点不清楚这是否是一项要求,但这不会删除下划线。如果下划线也应该删除,情况会变得更复杂。也许a-zA-Z技巧会更好。我会努力改进。a-zA-Z不起作用,因为它不会覆盖非ascii字符。。。但是我已经解决了这个问题,[a-zA-Z]不支持国际字符。
>>重新编译([^a-zA-Z']).sub(“,”从技术上来说,这不是意味着它可以工作吗?我很天真…)
=>
“从技术上来说,这不是意味着它可以工作吗?
好的观点。正如他所说,我只是在做一个简单的基本案例,这听起来好像他不需要涵盖所有角落的案例。
doesn't this mean it 'technically' works?