解析filenam中反斜杠和正斜杠的混合

2024-10-01 00:18:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我从一个包含/\混合格式的api获取文件名。在

infineName='c:/mydir1/mydir2\mydir3\mydir4\123xyz.csv版'

当我试图解析目录结构时,\后面跟一个字符被转换成单个字符。在

有没有办法让每个组件都正确?在

我已经试过了:

path.normpath didn't help. 

infilename = 'c:/mydir1/mydir2\mydir3\mydir4\123xyz.csv'
os.path.normpath(infilename)

out:
'c:\\mydir1\\mydir2\\mydir3\\mydir4Sxyz.csv'

Tags: csvpath目录api文件名格式字符结构
3条回答

在你的例子中看不到,但是写下:

infilename = 'c:/mydir1/mydir2\mydir3\mydir4\123xyz.csv'

这不是一个好主意,因为一些小写(和一些大写)字母如果跟在反斜杠后面,就会被解释为转义序列。臭名昭著的例子有\t\b,还有其他例子。例如:

^{pr2}$

双重失败,因为2个字符被解释为“tab”和“backspace”。在

在处理文本Windows样式的路径(或regex)时,必须使用raw前缀,更好的是规范化路径以消除斜杠。在

^{3}$

但是,raw前缀只适用于文本。如果在打印repr(string)时返回的字符串显示为'the\terrible\\dir',那么制表符已经被放入字符串中,除了糟糕的后处理之外,您什么也做不了。在

不要使用\进行分析,而是尝试使用\\进行分析。通常必须通过\进行转义,因此\字符实际上是\\。在

在字符串之前使用r将其作为原始字符串处理(即没有字符串格式)。在

例如

infilename = r'C:/blah/blah/blah.csv'

更多详情请点击: https://docs.python.org/3.6/reference/lexical_analysis.html#string-and-bytes-literals

相关问题 更多 >