所以,
我有一个看起来像\ uisfhb \ dfjn的字符串长度会有所不同。我努力使自己无法直觉,反斜杠是转义字符。我只想要“ dfjn”我目前有
more = "\\\\uisfhb\dfjn"
more = more.replace(r'"\\\\', r"\\")
sharename = more.rsplit(r'\\', 2)
print(sharename)
我马上回来['','uisfhb \ dfjn']
如果要在文字反斜杠上对字符串进行分区,则需要在分隔符中使用另一个反斜杠来对反斜杠进行转义。
>>> more.split('\\')
['', '', 'uisfhb', 'dfjn']
>>> more.rsplit('\\', 1)
['\\\\uisfhb', 'dfjn']
>>> more.rpartition('\\')
('\\\\uisfhb', '\\', 'dfjn')
一旦字符串被分割,可以使用索引-1访问最后一个元素:
>>> sharename = more.rsplit('\\', 1)[-1]
>>> sharename
'dfjn'
或使用序列拆包语法(*
运算符]
>>> *_, sharename = more.rpartition('\\')
>>> sharename
'dfjn'
我认为这是原始字符串的问题。试试这个:
more = "\\\\uisfhb\dfjn"
more = more.replace("\\\\", "\\")
sharename = more.split("\\")[2] # using split and not rsplit
print(sharename)
如果共享名是树中的最后一个节点,将得到它:
>>>more = "\\\\uisfhb\dfjn"
>>>sharename = more.split('\\')[-1]
>>>sharename
'dfjn'