是否有一个函数来阻止字符串中的最后一个字符,如果它是一些特殊字符?例如,我需要删除反斜杠,如果它在那里,并且什么也不做,如果没有。我知道我可以很容易地使用正则表达式,但想知道是否有类似于内置函数的小东西。
答案 0 :(得分:107)
使用rstrip
从字符串的右侧剥离指定的字符。
my_string = my_string.rstrip('\\')
答案 1 :(得分:18)
如果您不介意删除所有尾部反斜杠,可以使用string.rstrip()
例如:
x = '\\abc\\'
print x.rstrip('\\')
打印:
\abc
但是这有一个小问题(基于你的问题如何措辞):这将删除所有尾随反斜杠。如果你真的只想剥离最后一个角色,你可以这样做:
if x[-1] == '\\': x = x[:-1]
答案 2 :(得分:8)
如果您只想在多个情况下删除一个反斜杠,请执行以下操作:
s = s[:-1] if s.endswith('\\') else s
答案 3 :(得分:6)
但是,rstrip函数将删除的不仅仅是最后一个字符。它将删除字符串末尾的所有反斜杠。这是一个简单的if语句,只删除最后一个字符:
if s[-1] == '\\':
s = s[:-1]
答案 4 :(得分:6)
if s.endswith('\\'):
s = s[:-1]
答案 5 :(得分:2)
或者不那么美丽(不要打败我),但也有效:
stripSlash = lambda strVal: strVal[:-1] if strVal.endswith('\\') else strVal
stripSlash('sample string with slash\\')
是的 - rstrip更好。只是想试试。
答案 6 :(得分:1)
我们可以使用内置功能替换
<强> my_str.replace(my_char, '')强>
my_chars = '\\'
my_str = my_str.replace(my_char,'')
这将取代 my_str
中的所有 \my_str.replace(my_chars,'',i)
my_char = '\\'
my_str = 'AB\CD\EF\GH\IJ\KL'
print ("Original my_str : "+ my_str)
for i in range(8):
print ("Replace '\\' %s times" %(i))
print(" Result : "+my_str.replace(my_chars, '',i))
这将取代my_str i 次中的 \ 现在,您可以使用 i
控制要替换它的次数输出:
Original my_str : AB\CD\EF\GH\IJ\KL
Replace '\' 0 times
Result : AB\CD\EF\GH\IJ\KL
Replace '\' 1 times
Result : ABCD\EF\GH\IJ\KL
Replace '\' 2 times
Result : ABCDEF\GH\IJ\KL
Replace '\' 3 times
Result : ABCDEFGH\IJ\KL
Replace '\' 4 times
Result : ABCDEFGHIJ\KL
Replace '\' 5 times
Result : ABCDEFGHIJKL
Replace '\' 6 times
Result : ABCDEFGHIJKL
Replace '\' 7 times
Result : ABCDEFGHIJKL
答案 7 :(得分:0)
对于在这里结束的C#用户:
my_string = my_string.TrimEnd('\\');