gpt4 book ai didi

python - 在 Python 2.7 中比较用户输入的 unicode 字符串

转载 作者:太空宇宙 更新时间:2023-11-03 18:53:54 25 4
gpt4 key购买 nike

将用户输入的字符串与另一个字符串进行比较的最佳方法是什么?

例如:

# -*- coding: utf-8 -*-

from __future__ import unicode_literals

user_input = raw_input("Please, write árido: ").decode("utf8")
if u"árido" == user_input:
print "OK"
else:
print "FALSE"

编辑:

这个

# -*- coding: utf-8 -*-

from __future__ import unicode_literals
from unicodedata import normalize
import sys

uinput2 = "árbol"
uinput = raw_input("type árbol: ")

print "Encoding %s" % sys.stdout.encoding
print "User Input \t\tProgram Input"
print "-"*50
print "%s \t\t\t%s \t(raw value)" % (uinput, uinput2)
print "%s \t\t\t%s \t(unicode(value))" % (unicode(uinput), unicode(uinput2))
print "%s \t\t\t%s \t(value.decode('utf8'))" % (uinput.decode("utf-8"), uinput2.decode("utf-8"))
print "%s \t\t\t%s \t(normalize('NFC',value))" % (normalize("NFC",uinput.decode("utf-8")), normalize("NFC",uinput2.decode("utf-8")));
print "\n\nUser Input \t\tProgram Input (Repr)"
print "-"*50
print "%s \t%s" % (repr(uinput),repr(uinput2))
print "%s \t%s \t(unicode(value))" % (repr(unicode(uinput)), repr(uinput2))
print "%s \t%s \t(value.decode('utf8'))" % (repr(uinput.decode("utf-8")), repr(uinput2.decode("utf-8")))
print "%s \t%s \t(normalize('NFC',value)))" % (repr(normalize("NFC",uinput.decode("utf-8"))), repr(normalize("NFC",uinput2.decode("utf-8"))));

打印:

type árbol: árbol
Encoding utf-8
User Input Program Input
--------------------------------------------------
árbol árbol (raw value)
árbol árbol (unicode(value))
árbol árbol (value.decode('utf8'))
árbol árbol (normalize('NFC',value))


User Input Program Input (Repr)
--------------------------------------------------
'\xc3\x83\xc2\xa1rbol' u'\xe1rbol'
u'\xc3\xa1rbol' u'\xe1rbol' (unicode(value))
u'\xc3\xa1rbol' u'\xe1rbol' (value.decode('utf8'))
u'\xc3\xa1rbol' u'\xe1rbol' (normalize('NFC',value)))

有什么想法吗?当我使用 Java 等其他语言时,我没有任何问题。这种情况只发生在我使用 python 的时候。我正在使用 Eclipse。

提前致谢:)

最佳答案

你能检查一下你的终端的字符编码吗,

import sys

sys.stdin.encoding

如果是UTF-8,那么解码应该没问题。否则,您必须使用正确的编码来解码 raw_input。

像 raw_input().decode(sys.stdin.encoding) 一样,检查它是否正确以及 Unicode 规范化(如果需要)。

关于python - 在 Python 2.7 中比较用户输入的 unicode 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17706346/

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