在将项目插入数据库之前,我正尝试使用正则表达式清除一些数据。我无法解决在字符串末尾删除结尾的特殊字符的问题。
如何将此正则表达式写为仅,以删除结尾的特殊字符?
import re
strings = ['string01_','str_ing02_^','string03_@_', 'string04_1', 'string05_a_']
for item in strings:
clean_this = (re.sub(r'([_+!@#$?^])', '', item))
print (clean_this)
outputs this:
string01 # correct
string02 # incorrect because it remove _ in the string
string03 # correct
string041 # incorrect because it remove _ in the string
string05a # incorrect because it remove _ in the string and not just the trailing _
答案 0 :(得分:3)
您还可以使用特殊用途的字符串rstrip
方法
[s.rstrip('_+!@#$?^') for s in strings]
# ['string01', 'str_ing02', 'string03', 'string04_1', 'string05_a']
答案 1 :(得分:2)
答案 2 :(得分:1)
您可以重复字符类1次以上,否则只能替换1个特殊字符。然后声明字符串$
的结尾。请注意,您不需要角色类周围的捕获组:
[_+!@#$?^]+$
例如:
import re
strings = ['string01_','str_ing02_^','string03_@_', 'string04_1', 'string05_a_']
for item in strings:
clean_this = (re.sub(r'[_+!@#$?^]+$', '', item))
print (clean_this)
请参见Regex demo | Python demo
如果您还想最后删除空白字符,则可以在字符类中添加\s
:
[_+!@#$?^\s]+$