我有一堆特殊字符,如:
func load_downloads(){
for track in arr_tracks{
let urlString = BASE_URL + "/track/download/" + "\(track.id)"
print("downloaded url",urlString)
let url = NSURL(string: urlString)
let downloadTask = backgroundSession.downloadTask(with: url as! URL)
downloadTask.resume()
}
}
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {
let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
let destinationURLForFile = documentsURL.appendingPathComponent((downloadTask.originalRequest?.url?.lastPathComponent)! + "_" + (downloadTask.response?.suggestedFilename)!)
let fileManager = FileManager()
if fileManager.fileExists(atPath: destinationURLForFile.path){
}
else{
do {
try fileManager.moveItem(at: location as URL, to: destinationURLForFile as URL)
}catch{
print("An error occurred while moving file to destination url")
}
}
}
我有一个字符串:
special=[r'''\\''', r'''+''', r'''-''', r'''&''', r'''|''', r'''!''', r'''(''', r''')''', r'''{''', r'''}''',\
r'''[''', r''']''', r'''^''', r'''~''', r'''*''', r'''?''', r''':''', r'''"''', r''';''', r''' ''']
如何更换?我期待着:
stringer="Müller my [ string ! is cool^&"
此外,是否有一些内置来替换Python中的这些“特殊”字符?
答案 0 :(得分:1)
这可以通过简单的生成器表达式来解决:
>>> ''.join(ch for ch in stringer if ch not in special)
'M\xc3\xbcllermystringiscool'
请注意,这也会删除空格,因为它们位于special
列表中(最后一个元素)。如果您不希望删除它们,请不要在special
中包含空格,或者相应地修改if
检查。
答案 1 :(得分:0)
如果从特价中移除空格,可以使用re.sub()
执行此操作,但请注意,首先需要转义特殊的正则表达式字符。
In [58]: special=[r'''\\''', r'''+''', r'''-''', r'''&''', r'''|''', r'''!''', r'''(''', r''')''', r'''{''', r'''}''',\
r'''[''', r''']''', r'''^''', r'''~''', r'''*''', r'''?''', r''':''', r'''"''', r''';''']
In [59]: print re.sub(r"[{}]".format(re.escape(''.join(special))), '', stringer, re.U)
Müller my string is cool