python不正确的西里尔文格式
输出:python不正确的西里尔文格式,python,python-2.7,Python,Python 2.7,输出: def inp(text): tmp = str() arr = ['.' for x in range(1, 40 - len(text))] tmp += text + ''.join(arr) print tmp s=['tester', 'om', 'sup', 'jope'] sr=['тестер', 'ом', 'суп', 'жопа'] for i in s: inp(i) for i in sr: inp(i) 为什
def inp(text):
tmp = str()
arr = ['.' for x in range(1, 40 - len(text))]
tmp += text + ''.join(arr)
print tmp
s=['tester', 'om', 'sup', 'jope']
sr=['тестер', 'ом', 'суп', 'жопа']
for i in s:
inp(i)
for i in sr:
inp(i)
为什么Python不能正确处理西里尔文?生产线的末端不是笔直的,也不是杂乱无章的。使用格式也一样。如何纠正这一点?谢谢阅读以下内容:
text
参数中的inp
函数是一个字符串。在Python2.7中,字符串默认为字节。当使用utf-8编码时,西里尔字符不会映射为1-1个字节,但需要多个字节(通常在utf-8中为2个),因此当您使用len(text)
时,您不会得到字符数,而是字节数
为了获得字符数,您需要知道您的编码。假设它是utf-8,您可以将文本解码为该编码,它将正确打印:
tester.................................
om.....................................
sup....................................
jope...................................
тестер...........................
ом...................................
суп.................................
жопа...............................
重要的两条线是:
#!/usr/bin/python
# coding=utf-8
def inp(text):
tmp = str()
utext = text.decode('utf-8')
l = len(utext)
arr = ['.' for x in range(1, 40 - l)]
tmp += text + ''.join(arr)
print tmp
s=['tester', 'om', 'sup', 'jope']
sr=['тестер', 'ом', 'суп', 'жопа']
for i in s:
inp(i)
for i in sr:
inp(i)
首先对文本进行解码,结果是一个unicode字符串。之后,您可以使用内置的len
获取字符长度,这是您想要的
希望这有帮助。非常感谢。准确详细的答复。“再次谢谢你。”当然,很高兴能帮忙!
utext = text.decode('utf-8')
l = len(utext)