len(str)从文件名检索str后给出错误结果

时间:2018-06-26 02:38:34

标签: python-3.x

有人知道为什么我的长度是6而不是5吗? 我创建了一个名为björn-100.png的文件,并使用python3运行了代码:

import os

for f in os.listdir("."):
    p = f.find("-")
    name = f[:p]
    print("name")
    print(name)
    length = len(name)
    print(length)
    for a in name:
        print(a)

打印出以下内容:

name
björn
6
b
j
o
̈
r
n

代替打印

name
björn
5
b
j
ö
r
n

2 个答案:

答案 0 :(得分:3)

如果您使用的是python 2.7,则可以简单地先将文件名解码为UTF-8:

length = len(name.decode('utf-8'))

但是,由于您使用的是python 3,因此无法像对待string一样简单地解码bytearray,因此建议您使用unicodedata来规范化字符串。

import unicodedata
length = len(unicodedata.normalize('NFC', name))

答案 1 :(得分:1)

使用o char中的两个点获取正确的字符串的方法是:

TYPE v_sc_type is TABLE OF array_rec_type INDEX BY BINARY_INTEGER;