3 # See http://code.activestate.com/recipes/251871/
8 u'\N{ACUTE ACCENT}': "'",
9 u'\N{BROKEN BAR}': '|',
10 u'\N{CEDILLA}': '{cedilla}',
11 u'\N{CENT SIGN}': '{cent}',
12 u'\N{COPYRIGHT SIGN}': '{C}',
13 u'\N{CURRENCY SIGN}': '{currency}',
14 u'\N{DEGREE SIGN}': '{degrees}',
15 u'\N{DIAERESIS}': '{umlaut}',
16 u'\N{DIVISION SIGN}': '/',
17 u'\N{FEMININE ORDINAL INDICATOR}': '{^a}',
18 u'\N{INVERTED EXCLAMATION MARK}': '!',
19 u'\N{INVERTED QUESTION MARK}': '?',
20 u'\N{LATIN CAPITAL LETTER A WITH ACUTE}': 'A',
21 u'\N{LATIN CAPITAL LETTER A WITH CIRCUMFLEX}': 'A',
22 u'\N{LATIN CAPITAL LETTER A WITH DIAERESIS}': 'A',
23 u'\N{LATIN CAPITAL LETTER A WITH GRAVE}': 'A',
24 u'\N{LATIN CAPITAL LETTER A WITH RING ABOVE}': 'A',
25 u'\N{LATIN CAPITAL LETTER A WITH TILDE}': 'A',
26 u'\N{LATIN CAPITAL LETTER AE}': 'Ae',
27 u'\N{LATIN CAPITAL LETTER C WITH CEDILLA}': 'C',
28 u'\N{LATIN CAPITAL LETTER E WITH ACUTE}': 'E',
29 u'\N{LATIN CAPITAL LETTER E WITH CIRCUMFLEX}': 'E',
30 u'\N{LATIN CAPITAL LETTER E WITH DIAERESIS}': 'E',
31 u'\N{LATIN CAPITAL LETTER E WITH GRAVE}': 'E',
32 u'\N{LATIN CAPITAL LETTER ETH}': 'Th',
33 u'\N{LATIN CAPITAL LETTER I WITH ACUTE}': 'I',
34 u'\N{LATIN CAPITAL LETTER I WITH CIRCUMFLEX}': 'I',
35 u'\N{LATIN CAPITAL LETTER I WITH DIAERESIS}': 'I',
36 u'\N{LATIN CAPITAL LETTER I WITH GRAVE}': 'I',
37 u'\N{LATIN CAPITAL LETTER N WITH TILDE}': 'N',
38 u'\N{LATIN CAPITAL LETTER O WITH ACUTE}': 'O',
39 u'\N{LATIN CAPITAL LETTER O WITH CIRCUMFLEX}': 'O',
40 u'\N{LATIN CAPITAL LETTER O WITH DIAERESIS}': 'O',
41 u'\N{LATIN CAPITAL LETTER O WITH GRAVE}': 'O',
42 u'\N{LATIN CAPITAL LETTER O WITH STROKE}': 'O',
43 u'\N{LATIN CAPITAL LETTER O WITH TILDE}': 'O',
44 u'\N{LATIN CAPITAL LETTER THORN}': 'th',
45 u'\N{LATIN CAPITAL LETTER U WITH ACUTE}': 'U',
46 u'\N{LATIN CAPITAL LETTER U WITH CIRCUMFLEX}': 'U',
47 u'\N{LATIN CAPITAL LETTER U WITH DIAERESIS}': 'U',
48 u'\N{LATIN CAPITAL LETTER U WITH GRAVE}': 'U',
49 u'\N{LATIN CAPITAL LETTER Y WITH ACUTE}': 'Y',
50 u'\N{LATIN SMALL LETTER A WITH ACUTE}': 'a',
51 u'\N{LATIN SMALL LETTER A WITH CIRCUMFLEX}': 'a',
52 u'\N{LATIN SMALL LETTER A WITH DIAERESIS}': 'a',
53 u'\N{LATIN SMALL LETTER A WITH GRAVE}': 'a',
54 u'\N{LATIN SMALL LETTER A WITH RING ABOVE}': 'a',
55 u'\N{LATIN SMALL LETTER A WITH TILDE}': 'a',
56 u'\N{LATIN SMALL LETTER AE}': 'ae',
57 u'\N{LATIN SMALL LETTER C WITH CEDILLA}': 'c',
58 u'\N{LATIN SMALL LETTER E WITH ACUTE}': 'e',
59 u'\N{LATIN SMALL LETTER E WITH CIRCUMFLEX}': 'e',
60 u'\N{LATIN SMALL LETTER E WITH DIAERESIS}': 'e',
61 u'\N{LATIN SMALL LETTER E WITH GRAVE}': 'e',
62 u'\N{LATIN SMALL LETTER ETH}': 'th',
63 u'\N{LATIN SMALL LETTER I WITH ACUTE}': 'i',
64 u'\N{LATIN SMALL LETTER I WITH CIRCUMFLEX}': 'i',
65 u'\N{LATIN SMALL LETTER I WITH DIAERESIS}': 'i',
66 u'\N{LATIN SMALL LETTER I WITH GRAVE}': 'i',
67 u'\N{LATIN SMALL LETTER N WITH TILDE}': 'n',
68 u'\N{LATIN SMALL LETTER O WITH ACUTE}': 'o',
69 u'\N{LATIN SMALL LETTER O WITH CIRCUMFLEX}': 'o',
70 u'\N{LATIN SMALL LETTER O WITH DIAERESIS}': 'o',
71 u'\N{LATIN SMALL LETTER O WITH GRAVE}': 'o',
72 u'\N{LATIN SMALL LETTER O WITH STROKE}': 'o',
73 u'\N{LATIN SMALL LETTER O WITH TILDE}': 'o',
74 u'\N{LATIN SMALL LETTER SHARP S}': 'ss',
75 u'\N{LATIN SMALL LETTER THORN}': 'th',
76 u'\N{LATIN SMALL LETTER U WITH ACUTE}': 'u',
77 u'\N{LATIN SMALL LETTER U WITH CIRCUMFLEX}': 'u',
78 u'\N{LATIN SMALL LETTER U WITH DIAERESIS}': 'u',
79 u'\N{LATIN SMALL LETTER U WITH GRAVE}': 'u',
80 u'\N{LATIN SMALL LETTER Y WITH ACUTE}': 'y',
81 u'\N{LATIN SMALL LETTER Y WITH DIAERESIS}': 'y',
82 u'\N{LEFT-POINTING DOUBLE ANGLE QUOTATION MARK}': '<<',
84 u'\N{MASCULINE ORDINAL INDICATOR}': '{^o}',
85 u'\N{MICRO SIGN}': '{micro}',
86 u'\N{MIDDLE DOT}': '*',
87 u'\N{MULTIPLICATION SIGN}': '*',
88 u'\N{NOT SIGN}': '{not}',
89 u'\N{PILCROW SIGN}': '{paragraph}',
90 u'\N{PLUS-MINUS SIGN}': '{+/-}',
91 u'\N{POUND SIGN}': '{pound}',
92 u'\N{REGISTERED SIGN}': '{R}',
93 u'\N{RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK}': '>>',
94 u'\N{SECTION SIGN}': '{section}',
95 u'\N{SOFT HYPHEN}': '-',
96 u'\N{SUPERSCRIPT ONE}': '{^1}',
97 u'\N{SUPERSCRIPT THREE}': '{^3}',
98 u'\N{SUPERSCRIPT TWO}': '{^2}',
99 u'\N{VULGAR FRACTION ONE HALF}': '{1/2}',
100 u'\N{VULGAR FRACTION ONE QUARTER}': '{1/4}',
101 u'\N{VULGAR FRACTION THREE QUARTERS}': '{3/4}',
102 u'\N{YEN SIGN}': '{yen}'
105 def latin1_to_ascii(uinput):
106 if isinstance(uinput, bytes):
107 uinput = uinput.decode(sys.getfilesystemencoding())
119 if __name__ == '__main__':
120 if len(sys.argv) == 1:
121 sys.exit('Usage: %s filename\n' % sys.argv[0])
122 for name in sys.argv[1:]:
123 plain_ascii = latin1_to_ascii(name)
124 if plain_ascii != name:
125 os.rename(name, plain_ascii)