我想要使用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
?)有人能展示更好的代码吗?
答案 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)