У меня есть список путей к файлу unicode, в котором мне нужно заменить все умляуты английским диакритиком. Например, я бы ü с ue, ä с ae и так далее. Я определил словарь умляутов (ключей) и их диакритики (значения). Поэтому мне нужно сравнить каждую клавишу с каждым файловым путем и где ключ найден, замените его на значение. Кажется, это было бы просто, но я не могу заставить его работать. Кто-нибудь есть идеи? Любая обратная связь очень ценится!Python - переводчик немецких UMLauts на диакритические
код до сих пор:
# -*- coding: utf-8 -*-
import os
def GetFilepaths(directory):
"""
This function will generate all file names a directory tree using os.walk.
It returns a list of file paths.
"""
file_paths = []
for root, directories, files in os.walk(directory):
for filename in files:
filepath = os.path.join(root, filename)
file_paths.append(filepath)
return file_paths
# dictionary of umlaut unicode representations (keys) and their replacements (values)
umlautDictionary = {u'Ä': 'Ae',
u'Ö': 'Oe',
u'Ü': 'Ue',
u'ä': 'ae',
u'ö': 'oe',
u'ü': 'ue'
}
# get file paths in root directory and subfolders
filePathsList = GetFilepaths(u'C:\\Scripts\\Replace Characters\\Umlauts')
for file in filePathsList:
for key, value in umlautDictionary.iteritems():
if key in file:
file.replace(key, value) # does not work -- umlauts still in file path!
print file
заменить не изменяет в place, он возвращает измененную строку ... –
Возможный дубликат [Почему не вызывает строковый метод Python ничего не делает, если вы не назначаете его вывод?] (http: // stackover flow.com/questions/9189172/why-doesnt-calling-a-python-string-method-do-anything-unless-you-assign-its-out) –
Я не уверен, что такое правильный термин, но " диакритический "означает две точки, используемые для обозначения умлаутов, а не двухбуквенную орфографическую альтернативу. – chepner