如何从每个列表项中删除某个字符串

时间:2017-07-04 14:00:15

标签: list python-3.x loops strip

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)

1 个答案:

答案 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])