如果是反斜杠,则删除最后一个字符


77

如果它是某些特殊字符,是否有功能将字符串中的最后一个字符截断?例如,我需要删除反斜杠(如果存在),并且不执行任何操作(如果不存在)。我知道我可以使用regex轻松地做到这一点,但是想知道是否有类似的小型内置函数。


1
如果字符串末尾有多个反斜杠怎么办?全部删除?
Felix Kling

1
您已经有了很好的答案。如果您的问题来自需要在文件系统中创建正确的文件名,那么os.path.join(docs.python.org/library/os.path.html#os.path.join)非常有用
van

Answers:


131

用于rstrip从字符串的右侧剥离指定的字符。

my_string = my_string.rstrip('\\')

请参阅:http : //docs.python.org/library/stdtypes.html#str.rstrip


14
...并且如果字符串的末尾有多个反斜杠,它将删除多个字符。
蒂姆·皮茨克

@Tim:好点……我想OP应该澄清一下(据我了解,它应该删除所有“特殊字符”)。
Felix Kling

7
如果这是关于标准化路径名的,则与操作系统无关的方法是使用如上所述的strip,但是,要剥离的字符是os.sep -对于Windows是反斜杠,对于Unix是正斜杠。
克里斯·约翰逊

19

如果您不介意删除所有结尾的反斜杠,则可以使用 string.rstrip()

例如:

x = '\\abc\\'
print x.rstrip('\\')

印刷品:

\abc

但这有一个小问题(基于您的问题的措辞):这将去除所有尾随反斜杠。如果您确实只希望删除LAST字符,则可以执行以下操作:

if x[-1] == '\\': x = x[:-1]

10

如果您只想删除多个反斜杠,请执行以下操作:

s = s[:-1] if s.endswith('\\') else s

7
if s.endswith('\\'):
    s = s[:-1]

1
你有尝试过吗?这是语法错误。您需要使用if s.endswith('\\')
蒂姆·皮茨克

1
认真的我每次都碰到这个。如果原始字符串无法按预期工作,那该怎么办呢?
马特·乔纳

6

但是,rstrip函数将删除的不仅仅是最后一个字符。它将删除字符串末尾的所有反斜杠。这是一个简单的if语句,它将仅删除最后一个字符:

if s[-1] == '\\':
    s = s[:-1]

2

或不是那么漂亮(别打我),但也可以:

stripSlash = lambda strVal: strVal[:-1] if strVal.endswith('\\') else strVal
stripSlash('sample string with slash\\')

是的-rstrip更好。只想尝试。


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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.