我list
内的C:\
个文件路径存储在名为filepaths
的列表中,现在我必须从所有C:\
中删除filepaths
做一个for循环。
我在循环时找不到条带方法,因为每个元素都是list
类型。请在下面找到我的代码。
filepaths = ['C:\folder\file1.jpg','C:\file2.png','C:\file3.xls']
tobestriped = 'C:\'
for filepath in filepaths:
newfilepath = filepath.strip(tobestriped)
print(newfilepath)
答案 0 :(得分:0)
嗯,首先,在tobestriped
中,您将收到错误,因为\'
将被转义。您可以使用tobestriped = 'C:\\'
。
来自this SO回答:
A"原始字符串文字"是一个字符串略有不同的语法 字面意思,其中反斜杠,\,被视为含义"只是一个 反斜杠" (除非它恰好在引用之前 否则终止文字) - 没有"转义序列"代表 换行符,制表符,退格键,换页符等。在普通字符串中 文字,每个反斜杠必须加倍,以避免被视为 转义序列的开始。
接下来,在您的路径列表中,\f
也会被转义。要摆脱这个问题,请将这些字符串作为原始字符串:
filepaths = [r'C:\folder\file1.jpg', r'C:\file2.png', r'C:\file3.xls']
您将获得所需的结果:
filepaths = [r'C:\folder\file1.jpg', r'C:\file2.png', r'C:\file3.xls']
tobestriped = 'C:\\'
for filepath in filepaths:
newfilepath = filepath.strip(tobestriped)
print(newfilepath)
输出:
folder\file1.jpg
file2.png
file3.xls
您的解决方案的替代方案是利用所有字符串以C:\
开头的事实,以便您可以执行以下操作:
print([x[3:] for x in filepaths])