Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在反斜杠上使用python字符串split()?_Python_Regex - Fatal编程技术网

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

如何在反斜杠上使用python字符串split()?,python,regex,Python,Regex,我试图在文件路径的最后一个目录后命名一个文本文件。我需要能够为使用正向或反向斜杠的操作系统获取此名称。我已经成功地将字符串拆分方法用于正斜杠文件路径,而不是反斜杠。另外,当我试图打印反斜杠目录名时,斜杠不包括在内,可能读作转义序列;但是,当我使用re.search方法时,它仍然会找到斜杠 我该如何解决这个问题 见下面的代码: import re import sys targetDirectory = sys.argv[1] filePathDirectorySeparator = '' us

我试图在文件路径的最后一个目录后命名一个文本文件。我需要能够为使用正向或反向斜杠的操作系统获取此名称。我已经成功地将字符串拆分方法用于正斜杠文件路径,而不是反斜杠。另外,当我试图打印反斜杠目录名时,斜杠不包括在内,可能读作转义序列;但是,当我使用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()
该链接显示了我的控制台输出,显然我还不允许嵌入图像…

一个小例子

>>> 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由两个字符组成:反斜杠和小写n。 字符串引号可以用反斜杠转义,但反斜杠 留在弦中;例如,r\n是有效的字符串文字 由两个字符组成:反斜杠和双引号;r\is 不是有效的字符串文字,即使原始字符串也不能以奇数结尾 反斜杠的数量。具体来说,原始字符串不能以 单个反斜杠,因为反斜杠将转义以下引号 性格还请注意,后面跟一个换行符的单个反斜杠是 将这两个字符解释为字符串的一部分,而不是 行继续


我认为你比你需要的更努力了。Python有一个操作系统模块,该模块有一个函数,可以完全按照您的要求执行操作,而不依赖于平台。在这里,你只需要使用

fileName=os.path.basename(targetDirectory)

此外,如果你使用Python,你应该认真考虑把骆驼文件名移到更多的Python Snake实例文件名。

我没有看到链接,所以我已经上传到IMGUR:我猜想你的shell正在解释反斜杠,所以它们永远不会出现在Python中的Sy.Agv中。您可以尝试在命令行中转义它们吗?请看一下,并注意,您也可以在Windows路径中使用正斜杠。看起来这段代码实际上没有使用re.split。@user2357112您是对的,我将稍微更新引用后的引用。如果链接改变了,那么解释就没用了,所以一定要包含你发布的任何链接的相关片段。是的,当然。谢谢谢谢你的帮助!我们可以使用re.split'\\\\',s,因为如果它的\n\t\a意味着我们需要提到相应的转义码,则它将被视为\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\。我以前对此感到困惑,现在我清楚了,因为我注意到了骆驼的情况!谢谢你的帮助!