Decode(),len(),斯堪的纳维亚Iso String打印正确,但长度错误

时间:2017-08-29 10:36:42

标签: python string decode encode string-length

svenskaOrd是一个瑞典语单词列表。 我喜欢用字母打印单词的长度,以及格式正确的单词,只要长度为4或更长。 只有格式正确。

private void TreeView_Expanded(object sender, RoutedEventArgs e)
{
    TreeViewItem tvi = e.OriginalSource as TreeViewItem;
    ICommon obj = tvi.DataContext as ICommon;
    if (obj != null)
        obj.LoadChilds(...);

}

输出:

...

18 öroninflammation

5 ORT

10 örtagård

...

1 个答案:

答案 0 :(得分:2)

默认情况下open以文本模式打开文件。这会将原始字节解码为文本。您不需要在文本模式下打开文件,然后解码文本增益。它没有意义。 Python 3甚至不允许你这样做并报告错误(因为str没有decode方法)。

如果您知道您的文本文件具有给定的编码,那么您应该将其提供给open

swedishWords = open("svenskaOrd.txt", "r", encoding="iso8859_10")

for line in swedishWords:
    if(len(line) >= 4):
        print(len(line))
        print(line)

如果你真的想要操作原始字节,那么在原始模式下打开文件并解码每一行。

swedishBytes = open("svenskaOrd.txt", "rb")