Это мой первый раз, когда я пишу здесь, поэтому надеюсь, что все делаю хорошо. Я использую python 3.5 на Win10, и я пытаюсь «синхронизировать» музыку с Itunes на своем Android-устройстве. В принципе, я читаю XML-файл Itunes Library и получаю все расположение файлов (чтобы я мог копировать/вставлять их в свой телефон), но у меня проблемы с песнями, содержащими иностранные символы.Проблема размещения файлов из-за иностранных символов
import getpass
import re
import os
from urllib.parse import unquote
user = getpass.getuser()
ITUNES_LIB_PATH = "C:\\Users\\%s\\Music\\Itunes\\iTunes Music Library.xml" % user
ITUNES_SONGS_FILE = "ya.txt"
def write(file, what, newline=True):
with open(file, 'a', encoding="utf8") as f:
if not os.path.isfile(what):
print("Issue locating file %s\n" % what)
if newline:
what+"\n"
f.write(what)
def get_songs(file=ITUNES_LIB_PATH):
with open(file, 'r', encoding="utf8") as f:
f = f.read()
songs_location = re.findall("<key>Location</key><string>file://localhost/(.*?)</string>", f)
for song in songs_location:
song = unquote(song.replace("/", '\\'))
write(ITUNES_SONGS_FILE, song)
get_songs()
Выход:
Issue locating file C:\Users\Dymy\Desktop\Media\Norin &amp; Rad - Bird Is The Word.mp3
Как мне справиться с этим "& усилителя;" в имени файла?
Возможно, вы могли бы использовать 'replace()' еще раз, чтобы сделать все '&' 'на' & ' – Will
или использовать html lib как ответ [здесь] (http://stackoverflow.com/questions/2360598/ how-do-i-unescape-html-entities-in-a-string-in-python-3-1) –
спасибо @RNar, он решил проблему! Мне было интересно, может ли быть способ избежать кодирования utf8, избегая чтения() и write() ... –