如何在反斜杠上使用python字符串split()?



我正在尝试以文件路径中的最后一个目录命名文本文件。 我需要能够为使用正斜杠或反斜杠的操作系统获取此名称。我已经成功地将字符串 split(( 方法用于正斜杠文件路径,但没有使用反斜杠。另外,当我尝试打印反斜杠目录名称时,不包括斜杠(可能作为转义序列读取(;但是,当我使用 re.search(( 方法时,它仍然会找到斜杠。

我该如何解决这个问题?

请参阅下面的代码:

import re
import sys
targetDirectory = sys.argv[1]
filePathDirectorySeparator = ''
usesForwardSlashSeparator = re.search('/', targetDirectory)
if(usesForwardSlashSeparator):
filePathDirectorySeparator = '/'
else:
filePathDirectorySeparator = '\'
fileName = targetDirectory.split(filePathDirectorySeparator)[-1]
file = open(fileName, 'w+')
file.write('HELLO')
file.close()

该链接显示了我的控制台输出(显然我还不允许嵌入图像......

我认为你比你需要的更努力。Python有一个os模块,它有一个功能可以完全做你想要的事情,独立于平台。在这里,您只需要使用

fileName=os.path.basename(targetDirectory)

此外,如果你使用Python,你应该认真考虑从骆驼案(fileName(转向更Pythonic的蛇案(file_name(。

一个小例子,

>>> print s
this/hello
>>> import re
>>> re.split('/',s)
['this', 'hello\']
>>> re.split('\',s)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 171, in split
return _compile(pattern, flags).split(string, maxsplit)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py", line 251, in _compile
raise error, v # invalid expression
sre_constants.error: bogus escape (end of line)
>>> re.split(r'\',s)
['this/hello', '']

"r"前缀很重要!

参考!

那是

当存在"r"或"R"前缀时,后面的字符 反斜杠包含在字符串中而不更改,并且所有 反斜杠保留在字符串中。例如,字符串文本 r"" 由两个字符组成:反斜杠和小写"n"。 字符串引号可以使用反斜杠进行转义,但反斜杠 保留在字符串中;例如,r"\" 是有效的字符串文本 由两个字符组成:反斜杠和双引号;r"\" 为 不是有效的字符串文本(即使是原始字符串也不能以奇数结尾( 反斜杠数(。具体来说,原始字符串不能以 单反斜杠(因为反斜杠会转义以下引号 字符(。另请注意,后跟换行符的单个反斜杠是 解释为这两个字符作为字符串的一部分,而不是 行连续。

最新更新