Python 如何替换所有连字符的单词
我试图用它们的分离版本替换字符串中所有连字符的单词。我能够检测到连字符的单词,但我无法用单独的版本替换它们。我该怎么做 以下是示例和示例代码:Python 如何替换所有连字符的单词,python,regex,Python,Regex,我试图用它们的分离版本替换字符串中所有连字符的单词。我能够检测到连字符的单词,但我无法用单独的版本替换它们。我该怎么做 以下是示例和示例代码: import re text = "one-hundered-and-three- some text foo-bar some--text" re.findall(r'\w+(?:-\w+)+',text) # returns: ['one-hundered-and-three', 'foo-bar'] # I want to modify text
import re
text = "one-hundered-and-three- some text foo-bar some--text"
re.findall(r'\w+(?:-\w+)+',text)
# returns: ['one-hundered-and-three', 'foo-bar']
# I want to modify text as follows:
# text_new = "one hundered and three- some text foo bar some--text"
您可以将re.sub()
与repl
参数的函数一起使用:
In [12]: re.sub(r'\w+(?:-\w+)+', lambda match: match.group(0).replace('-', ' '), text)
Out[12]: 'one hundered and three- some text foo bar some--text'
我在这里以一行代码的形式编写了它,但我认为如果将lambda移到一个命名函数中会更清楚。re.sub()
具有正向的前向和后向:
import re
text = "one-hundered-and-three- some text foo-bar some--text"
print(re.sub(r'(?<=\w)-(?=\w)', ' ', text))
# one hundered and three- some text foo bar some--text
重新导入
text=“一百加三-一些文本foo-bar一些--text”
打印(re.sub(r')(?您可以使用非常简单的图案:
\b-\b
\b
单词边界
-
连字符
\b
单词边界
正则表达式演示
Python演示:
import re
text = "one-hundered-and-three- some text foo-bar some--text"
print(re.sub(r'\b-\b', ' ', text))
印刷品:
one hundered and three- some text foo bar some--text