Python函数,用于将分号和短划线转换为字符串中的空格

时间:2017-10-08 02:25:40

标签: python regex string python-3.x

我如何编写一个简单的python函数,它接受一个字符串并通过将semis和破折号替换为空格来修复它?例如:

  • 输入字符串:This; is; an-example-string
  • 输出字符串:这是一个示例字符串

我相信我可以使用正则表达式(来自谷歌搜索),但我不确定它是如何工作的?我认为正则表达式比手动解析它更容易,更简洁?感谢

2 个答案:

答案 0 :(得分:4)

如果你想使用正则表达式,你可以这样做:

>>> import re
>>> re.sub('[;-]', ' ', string)
'This is an example string'
OTOH,正则表达式在这里似乎有些过分。您可以链接两个str.replace调用,或使用str.translate(python3.x)。

>>> string.translate(str.maketrans(dict.fromkeys(';-', ' ')))
'This is an example string'

对于python2.x,您首先import string as st,然后以相同方式调用st.maketrans

translate优于replace的优势在于它非常快,无论要替换的数量/类型如何,都只需要一次通话。

答案 1 :(得分:0)

您可以在python中使用re.sub()来查找字符串中的模式并将其替换为其他模式。在这种情况下,您可以查找模式[a-z&A-Z&0-9] 如果字符串中存在除这些字符之外的其他字符,则用空格替换它。

re.sub(pattern, repl, string)

import re

value = "This;is;an-example-string output string:"

new_value = re.sub('[^a-zA-Z0-9 \n\.]', ' ', value)

print (new_value)