在我的代码中,我有一个位置列表,列表的输出是这样
['D:\\Todo\\VLC\\Daft_Punk\\One_more_time.mp4"', ...
我想用“ \”替换“ \\”
(listcancion是包含所有字符串的列表)
我尝试用此代码remplacement = [listcancion.replace('\\', '\') for listcancion in listcancion]
或此remplacement = [listcancion.replace('\\\\', '\\') for listcancion in listcancion]
或此remplacement = [listcancion.replace('\\', 'X') for listcancion in listcancion]
listrandom = [remplacement.replace('X', '\') for remplacement in remplacement]
我只需要更改字符\我就不能做这样的事情("\\Todo", "\Todo")
,因为我要替换的字符更多。
如果我不用进口就可以解决,那就太好了。
答案 0 :(得分:2)
这只是字符串表示形式的问题。
首先,您必须区分字符串的“实际”内容及其表示形式。
字符串的“实际”内容可能是字母,数字,标点符号等,这使得显示起来非常容易。但是想象一下包含a
,换行符和b
的字符串。如果打印该字符串,则会得到输出
a
b
这就是您的期望。
但是为了使其更紧凑,该字符串的表示形式为a\nb
:换行符表示为\n
,\
用作转义符。比较print(a)
(与print(str(a))
的输出)和print(repr(a))
的输出。
现在,为了不将其与包含a
,\
,n
和b
的字符串混淆,字符串中的“真实”反斜杠应使用\\
的表示形式和打印为a\nb
的相同字符串,以a\\nb
表示形式,以便与第一个示例区分开。
如果您打印任何内容的列表,即使它们是字符串,也将以逗号分隔的形式显示其组件表示形式。
如果愿意
for element in listcancion:
print(element)
您会看到该字符串实际上仅包含一个\
,其表示形式为\\
。
(哦,顺便说一句,我不确定[listcancion.<something> for listcancion in listcancion]
之类的东西是否按预期工作;最好使用另一个变量作为循环变量n,例如[element.<something> for element in listcancion]
。)