在python中的特殊符号前后插入空格

时间:2016-11-11 14:42:12

标签: python string

我想要使用Python的预处理字符串。 这是一个例子。

给定一个字符串

string = "hello... (world)!"

我想在特殊字符之前和之后插入空格,例如

desired_string = "hello . . . ( world ) !"

我通过替换功能找到了一种方法。

string = string.replace(".", " . ")
string = string.replace("(", " ( ")
string = string.replace(")", " ) ")
string = string.replace("!", " ! ")

然后,

>>> string
'hello .  .  .   ( world )  ! '

(此输出字符串的空格多于desired_string,但可以接受,因为我稍后会应用.split方法。)

但是代码很长,特别是当出现许多类型的符号时。 (例如!,@,$,%,&,....)

我认为有更好的方法(可能使用re.sub?)有人能展示更好的代码吗?

3 个答案:

答案 0 :(得分:1)

使用re在所需字符之前和之后添加空格:

import re

pat = re.compile(r"([.()!])")
print (pat.sub(" \\1 ", string))
# hello .  .  .   ( world )  ! 

答案 1 :(得分:0)

可以使用简单的生成器表达式来解决您的问题。在您的情况下无需re

>>> string = "hello... (world)!"
>>> ''.join((' {} '.format(el) if el in '.()!' else el for el in string))
'hello .  .  .   ( world )  ! '
>>> 

这可以通过生成器循环遍历string中的每个字符并测试租船人是否“特殊”。如果是,则返回带有周围空格的字符。否则,只返回当前字符。然后,''.join()用于连接从表达式返回的生成器对象。

答案 2 :(得分:0)

您可以使用isaplha()

data = "hello... (world)!"

for c in data[:]:
    if not c.isalpha():
        data = data.replace(c,  " %s " % c)

print(data)