gpt4 book ai didi

python - 为什么只有一个字符被正确更改?

转载 作者:可可西里 更新时间:2023-11-01 09:32:15 25 4
gpt4 key购买 nike

我的代码如下:

import msvcrt
userKeyPress = [""]
x = 0
whereInList = 0
def writeToList(char):
if " " not in char:

userKeyPress[whereInList] = userKeyPress[whereInList] + char

while x == 0:
userChar = msvcrt.getch()
userChar = userChar.decode("ASCII")
if " " in userChar:
whereInList = whereInList + 1
userKeyPress.extend(" ")
elif " " not in userChar and "q" not in userChar:
writeToList(userChar)
elif "q" in userChar:
print(userKeyPress)
x = 1

它接受用户输入并将其放入列表中,空格创建一个新的列表值。运行时,它能够将用户按下的第一个字母从字节字符串格式转换,但所有其他字符都不是第一个字符。

例如,如果我在键盘上输入字母“a”,然后是“b”,然后是“c”,它会返回

['a\x00b\x00c\x00']

第一个字母没问题,但后面的两个字母前面有\x00。为什么会这样,我该如何解决?

最佳答案

看起来您正在将 UTF-16 编码字符转换为 ASCII。UTF-16 是 Windows 中的默认编码,用两个字节表示所有字符,这意味着 ascii 集中的所有字符都将包含一个空字节 \x00

阅读文档时,我希望 msvcrt.getch() 返回 ASCII 编码的字符,所以这是意外的。

无论如何,如果您将 decode("ASCII") 替换为 decode('utf16'),您应该会得到预期的输出。

关于python - 为什么只有一个字符被正确更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52688917/

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