Python 如果最后一个字符为';这是反斜杠

Python 如果最后一个字符为';这是反斜杠,python,string,Python,String,如果字符串中的最后一个字符是某个特殊字符,是否有一个函数来选择它?例如,如果有反斜杠,我需要删除它,如果没有,我什么也不做。我知道我可以很容易地用正则表达式来实现,但我想知道是否有类似于小型内置函数的功能。使用rstrip从字符串右侧去除指定字符 my_string = my_string.rstrip('\\') 请参阅:如果您不介意删除所有尾部反斜杠,可以使用 例如: x = '\\abc\\' print x.rstrip('\\') 印刷品: \abc 但这有一个小问题(根据你的问

如果字符串中的最后一个字符是某个特殊字符,是否有一个函数来选择它?例如,如果有反斜杠,我需要删除它,如果没有,我什么也不做。我知道我可以很容易地用正则表达式来实现,但我想知道是否有类似于小型内置函数的功能。

使用
rstrip
从字符串右侧去除指定字符

my_string = my_string.rstrip('\\')

请参阅:

如果您不介意删除所有尾部反斜杠,可以使用

例如:

x = '\\abc\\'
print x.rstrip('\\')
印刷品:

\abc
但这有一个小问题(根据你的问题的措辞):这将去掉所有后面的反斜杠。如果你真的只想去掉最后一个角色,你可以这样做:

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

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

if s[-1] == '\\':
    s = s[:-1]
或者不是很漂亮(别打我),但也很有效:

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

是的,rstrip更好。我只是想试试

如果在多个反斜杠的情况下只想删除一个反斜杠,请执行以下操作:

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

我们可以使用内置功能替换

我的字符串替换(我的字符“”)

这将替换my\u str中的所有\

我的任务替换(我的任务,我)

这将取代my_stri中的\ 现在,您可以控制使用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))
输出:

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
对于最终来到这里的C#人:

my_string = my_string.TrimEnd('\\');

…如果字符串末尾有多个反斜杠,它将删除多个字符。@Tim:说得好。。。我想OP应该澄清一下(据我所知,它应该删除所有的“特殊字符”)。如果这是关于规范化路径名的,操作系统中立的方法是如上所述使用strip,但要剥离的字符是OS.sep——这是Windows的反斜杠,Unix的正斜杠。如果字符串末尾有多个反斜杠怎么办?把它们都拿走?你已经有好答案了。如果您的问题来自于需要在文件系统中创建一个正确的文件名,那么os.path.join()就来了。您尝试过这个吗?这是一个语法错误。如果s.endswith(“\\”),你需要使用
我每次都会遇到这种情况。如果原始字符串不能按预期工作,那么它们又有什么意义呢。
my_string = my_string.TrimEnd('\\');