如何删除另一个特定字符前的特定字符?

时间:2017-01-14 12:17:09

标签: python regex python-2.7 python-3.x

在字符串中:

my_string = 'log   (x)' 

我需要删除左括号前面的所有空格' ' '('

post建议使用:

re.sub(r'.*(', '(', my_string) 

这是一种矫枉过正,因为它与my_string[my_string.index('('):]具有相同的效果,也会删除'log'

是否有一些regexpr魔法可以删除另一个特定字符前面的所有空格?

3 个答案:

答案 0 :(得分:4)

为什么不呢:

re.sub(' +\(', '(', my_string)

答案 1 :(得分:3)

使用前瞻

security = Security(app, user_datastore)

# This processor is added to all templates
@security.context_processor
def security_context_processor():
    return dict(hello="world")

# This processor is added to only the register view
@security.register_context_processor
def security_register_processor():
    return dict(something="else")

由于re.sub(r"\s+(?=\()","",my_string) 运算符,括号内的实体未被消耗(未被替换),?=匹配任意数量的空格(制表符,空格等)。

没有正则表达式的另一种可能性:

\s+

(根据"(".join([x.rstrip() for x in my_string.split("(")]) 拆分字符串,然后使用在列表解析中应用(的相同字符将其连接回来)

答案 2 :(得分:1)

您可以使用前瞻断言,请参阅Python文档中的regular expression syntax

import re

my_string = 'log   (x)'
print(re.sub(r'\s+(?=\()', '', my_string))
# log(x)