List 简单列表dict函数

List 简单列表dict函数,list,python-3.x,dictionary,codec,python-unicode,List,Python 3.x,Dictionary,Codec,Python Unicode,我正试图编写一个简单的程序,以模拟一条简单的公交线路与一些车站进行交换。我用了两个列表表示公交车站,用了一个dict表示线路:公交车站 这是密码 `def main(): lineA = ["Stazione Autolinee","Via Romagnoli","Via E.Filiberto", \ "Piazza del popolo" , "Via Cattaneo", "Via Pio VI", "P.Le Prampolini", \

我正试图编写一个简单的程序,以模拟一条简单的公交线路与一些车站进行交换。我用了两个列表表示公交车站,用了一个dict表示线路:公交车站 这是密码

`def main():

    lineA = ["Stazione Autolinee","Via Romagnoli","Via E.Filiberto", \
            "Piazza del popolo" , "Via Cattaneo", "Via Pio VI", "P.Le Prampolini", \
            "Via dei Mille", "Via Villafranca","Via Romagnoli", "Viale Kennedy", \
            "Via Mosca","Via Bucarest","Via U.Zani","Via Kennedy","Via Bruxelles", \
            "Via Bachelet","Via Mazzocchi Alemanni","Via Sant'Agostino", "V.Le P.L. Nervi", \
            "Via Milano" , "Via Palermo" , "Via Mazzocchi Alemanni" , "Via Sant’Agostino", \
            "Via Del Lido" , "Via Garigliano" , "Via Pio VI" , "C.so della Repubblica", \
            "Piazza del Popolo" , "Via C. Battisti" , "Via E. Filiberto" , "Via Romagnoli", \
            "Stazione Autolinee"]
    lineB = ["Stazione Autolinee" , "Via Romagnoli" , "Via E. Filiberto" , "Piazza del Popolo", \
            "Via Diaz" , "V.Le Don Morosini" , "V.Le Mazzini" , "Viale dello Statuto" , \
            "Via Virgilio" , "Via Terenzio" , "V.Le Petrarca" , "Via dei Volsci" , "Via Don Torello" , \
            "Via S.Francesco D\'Assisi" , "Via Pantanaccio" , "Via Epitaffio" , "Via M. Terminillo" , \
            "Via G.S. d\' Italia" , "Via Pionieri della Bonifica" , "P.Le Carturan" , "Via Carturan" , \
            "Corso della Repubblica" , "Via C. Battisti" , "C.so Matteotti" , "Piazza del Popolo" , \
            "Corso Della Repubblica" , "Via C. Battisti" , "Via E. Filiberto" , "Stazione Autolinee"]
    diz = {"Line A":lineA, "Line B":lineB}
    for key in diz:
        for ele in diz[key]:
            print(key, ele)
`
这就是输出

Line A Stazione Autolinee
Line A Via Romagnoli
Line A Via E.Filiberto
Line A Piazza del popolo
Line A Via Cattaneo
Line A Via Pio VI
Line A P.Le Prampolini
Line A Via dei Mille
Line A Via Villafranca
Line A Via Romagnoli
Line A Viale Kennedy
Line A Via Mosca
Line A Via Bucarest
Line A Via U.Zani
Line A Via Kennedy
Line A Via Bruxelles
Line A Via Bachelet
Line A Via Mazzocchi Alemanni
Line A Via Sant'Agostino
Line A V.Le P.L. Nervi
Line A Via Milano
Line A Via Palermo
Line A Via Mazzocchi Alemanni
Line A Traceback (most recent call last):
  File "BUS.py", line 30, in <module>
    main()
  File "BUS.py", line 29, in main
    print(key, ele)
  File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2019' in position
8: character maps to <undefined>
Premere un tasto per continuare . . .
行A Stazione AUTOLINE
A线经罗马格诺利
A线经E.Filiberto
A线波波罗广场
A线经卡塔尼奥
A线通过Pio VI
普兰波利尼A线
A线经代米尔
A线经维拉弗兰卡
A线经罗马格诺利
肯尼迪大道A线
A线经莫斯卡
经布加勒斯特的A线
A线经U.Zani
A线经肯尼迪
A线经Bruxelles
经由巴切莱特的A线
A线经Mazzocchi-Alemanni
A线经圣阿戈斯蒂诺
A线V.Le P.L.Nervi
A线途经米兰
A线经巴勒莫
A线经Mazzocchi-Alemanni
行A回溯(最近一次呼叫最后一次):
文件“BUS.py”,第30行,在
main()
文件“BUS.py”,第29行,在main中
打印(键,ele)
文件“C:\Python34\lib\encodings\cp850.py”,第19行,编码
返回codecs.charmap\u encode(输入、自身错误、编码\u映射)[0]
UnicodeEncodeError:“charmap”编解码器无法将字符“\u2019”编码到位
8:字符映射到
在继续下去之前。
我无法理解“encode”错误
有人可以解释吗?

首先,定义列表内容时不需要连续反斜杠

你的节目很好。可能源代码也存储在UTF-8中,Python会正确地使用它

在我看来,问题在于
print
命令与控制台窗口的输出相结合。Microsoft console窗口在您的情况下使用
cp850
编码,无法显示特殊字符。(更确切地说,Python发现控制台使用了编码,Python无法转换控制台窗口的输出。)请尝试以下修改,将输出写入文件:

#!python3
lineA = ["Stazione Autolinee","Via Romagnoli","Via E.Filiberto", 
        "Piazza del popolo" , "Via Cattaneo", "Via Pio VI", "P.Le Prampolini", 
        "Via dei Mille", "Via Villafranca","Via Romagnoli", "Viale Kennedy", 
        "Via Mosca","Via Bucarest","Via U.Zani","Via Kennedy","Via Bruxelles", 
        "Via Bachelet","Via Mazzocchi Alemanni","Via Sant'Agostino", "V.Le P.L. Nervi", 
        "Via Milano" , "Via Palermo" , "Via Mazzocchi Alemanni" , "Via Sant’Agostino", 
        "Via Del Lido" , "Via Garigliano" , "Via Pio VI" , "C.so della Repubblica", 
        "Piazza del Popolo" , "Via C. Battisti" , "Via E. Filiberto" , "Via Romagnoli", 
        "Stazione Autolinee"]
lineB = ["Stazione Autolinee" , "Via Romagnoli" , "Via E. Filiberto" , "Piazza del Popolo", 
        "Via Diaz" , "V.Le Don Morosini" , "V.Le Mazzini" , "Viale dello Statuto" , 
        "Via Virgilio" , "Via Terenzio" , "V.Le Petrarca" , "Via dei Volsci" , "Via Don Torello" , 
        "Via S.Francesco D'Assisi" , "Via Pantanaccio" , "Via Epitaffio" , "Via M. Terminillo" , 
        "Via G.S. d' Italia" , "Via Pionieri della Bonifica" , "P.Le Carturan" , "Via Carturan" , 
        "Corso della Repubblica" , "Via C. Battisti" , "C.so Matteotti" , "Piazza del Popolo" , 
        "Corso Della Repubblica" , "Via C. Battisti" , "Via E. Filiberto" , "Stazione Autolinee"]
diz = {"Line A":lineA, "Line B":lineB}

with open('output.txt', 'w', encoding='utf-8') as fout:
    for key in diz:
        for ele in diz[key]:
            fout.write('{} {}\n'.format(key, ele))

。。。然后查看
output.txt

您是否查看了导致故障的
ele
索引
8
处的字符
“Via Sant'Agostino”
-有什么用?尝试在文件顶部添加
#-*-编码:utf8-*-
(或文件具有的任何编码)。