gpt4 book ai didi

powershell - 尝试使用Windows Powershell在Python 3中上载特定字符

转载 作者:行者123 更新时间:2023-12-03 00:08:45 24 4
gpt4 key购买 nike

我在Windows Powershell中运行此代码,它包含一个名为languages.txt的文件,在该文件中我尝试在字节与字符串之间转换:

这是languages.txt:

Afrikaans
አማርኛ
Аҧсшәа
العربية
Aragonés
Arpetan
Azərbaycanca
Bamanankan
বাংলা
Bân-lâm-gú
Беларуская
Български
Boarisch
Bosanski
Буряад
Català
Чӑвашла
Čeština
Cymraeg
Dansk
Deutsch
Eesti
Ελληνικά
Español
Esperanto
فارسی
Français
Frysk
Gaelg
Gàidhlig
Galego
한국어
Հայերեն
हिन्दी
Hrvatski
Ido
Interlingua
Italiano
עברית
ಕನ್ನಡ
Kapampangan
ქართული
Қазақша
Kreyòl ayisyen
Latgaļu
Latina
Latviešu
Lëtzebuergesch
Lietuvių
Magyar
Македонски
Malti
मराठी
მარგალური
مازِرونی
Bahasa Melayu
Монгол
Nederlands
नेपाल भाषा
日本語
Norsk bokmål
Nouormand
Occitan
Oʻzbekcha/ўзбекча
ਪੰਜਾਬੀ
پنجابی
پښتو
Plattdüütsch
Polski
Português
Română
Romani
Русский
Seeltersk
Shqip
Simple English
Slovenčina
کوردیی ناوەندی
Српски / srpski
Suomi
Svenska
Tagalog
தமிழ்
ภาษาไทย
Taqbaylit
Татарча/tatarça
తెలుగు
Тоҷикӣ
Türkçe
Українська
اردو
Tiếng Việt
Võro
文言
吴语
ייִדיש
中文

然后,这是我使用的代码:
import sys
script, input_encoding, error = sys.argv


def main(language_file, encoding, errors):
line = language_file.readline()

if line:
print_line(line, encoding, errors)
return main(language_file, encoding, errors)


def print_line(line, encoding, errors):
next_lang = line.strip()
raw_bytes = next_lang.encode(encoding, errors=errors)
cooked_string = raw_bytes.decode(encoding, errors=errors)

print(raw_bytes, "<===>", cooked_string)


languages = open("languages.txt", encoding="utf-8")

main(languages, input_encoding, error)

这是输出(来源:Zed A. Shaw的《学习Python 3的艰辛方法》):

Output 1

Output 2

我不知道为什么它不上传字符并显示问题块。谁能帮我?

最佳答案

第一个失败的字符串是አማርኛ。第一个字符在unicode 12A0中(请参阅here)。在UTF-8中,即b'\xe1\x8a\xa0'。因此,该部分显然很好。该文件确实是UTF-8。

打印不会引发异常,因此您的输出编码可以处理所有字符。一切都很好。

我看到它失败的唯一剩余原因是控制台中使用的字体不支持所有字符。

如果只是玩耍,您不必担心。认为它工作正常。

另一方面,我建议更改代码中的一些内容:

  • 您正在为每一行递归运行main。绝对不需要这样做,并且在较长的文件上会遇到递归深度限制。而是使用for循环。
  • for line in lines:
    print_line(line, encoding, errors)
  • 您将以UTF-8格式打开文件,因此从文件中读取内容会自动将UTF-8解码为Unicode,然后将其编码回row_bytes,然后再次编码为cooked_string,与line相同。最好将文件读取为原始二进制文件,在换行符上分割它,然后解码。然后,您将对所发生的事情有更清晰的了解。
  • with open("languages.txt", 'rb') as f:
    raw_file_contents = f.read()

    关于powershell - 尝试使用Windows Powershell在Python 3中上载特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54386894/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com