获取字符串的字符(从右侧)

3
我希望能找到最佳方法获取变量的文件名,该变量看起来像这样:
 a = 'this\is\a\path\to\file'
 print a[-4:]

我想通过提取最后四个字母来获取“file”,代码为print a[-4:],但结果是:
 ile

如果我执行print a[-5:],我会得到:
 ofile

我猜 Python 在反斜杠的处理上存在问题,转义也无法解决。你会如何解决这个问题?你会采用我的方式还是有更高效的方法通过从右往左搜索 '\' 获取 "file"?

3个回答

4

\f是Python中的一个单一字符(换页符)。请尝试加倍反斜杠:

a = 'this\\is\\a\\path\\to\\file'

或者,等价于:
a = r'this\is\a\path\to\file'

然后,print a[-4:] 将会输出 file


还有一种方法不改变变量a吗?例如r'(a)'...因为我不能编辑a,我需要使用它未转义的。 - Johnny
@JohnBrown 不用担心,它已经被转义了,只有当你手动写错时才会出错,但 Python 模块将产生正确的结果。此外,最好的方法是 os.path.splitext - jamylak
我想出了这个 nvm b = a.replace("\","")[-4:]。 - Johnny
@JohnBrown,你为什么认为你需要那样做? - jamylak

3
>>> import os
>>> a = 'A/B'
>>> os.path.normpath(a)
'A\\B'
>>> a = 'A/./B'
>>> os.path.normpath(a)
'A\\B'
>>> a = 'A\B'
>>> os.path.normpath(a)
'A\\B'
>>> a = 'A\\B'
>>> os.path.normpath(a)
'A\\B'

那么,与其使用[-4:],更好的做法是使用 'A//B'.split(os.path.sep)[-1],这样你可以确保获取路径的最后一个完整部分。 os.path.sep 返回当前操作系统中的路径分隔符。

1
>>> a = r'this\is\a\path\to\file'
>>> print a[-4:]
file

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接