将分类用户输入转换为数字



所以我试图将用户通过表单输入的数据更改为字符串。

这是组合框

的代码
Status_bangunan_cb = Combobox(window, textvariable = STATUS_BANGUNAN,values=['1. Milik Sendiri','2. Kontrak/Sewa','3. Bebas Sewa','4. Dinas','5. Lainnya'],
font=14,state='r',width=33).place(x=320,y=110)

这里是输出

1. Milik Sendiri

但是我想要的输出是1,所以前面的用户输入被转换成一个数字。

我已经尝试使用以下代码

Status_bangunan.replace({'1. Milik Sendiri':1,'2. Kontrak/Sewa':2,'3. Bebas Sewa':3,'4. Dinas':4,'5. Lainnya':5}, inplace=True)

但是它不起作用,这里是错误

TypeError: str.replace() takes no keyword arguments

然后我也尝试了下面的代码

SB = Status_bangunan.replace('1. Milik Sendiri','1')

结果

1

的代码工作,但只为1部分,我想要的是所有它们都被自动转换,而不仅仅是1。但是str.replace()函数只能有两个参数。

我期望的结果是,当用户通过表单(分类)输入时,获得的结果将自动转换为数字

我还是不明白,请帮忙。对于表单,我使用python gui

i have try this code

Dict1 = {"1. Milik Sendiri":"1", "2. Kontrak/Sewa":"2","3. Bebas Sewa":"3","4. Dinas":"4","5. Lainnya":"5"} 
for key in Dict1.keys():
SB = Status_bangunan.replace(key, Dict1[key])

但结果

1. Milik Sendiri

replace方法只能用字符串替换字符串:'alpha beta gamma'.replace('bet','delt') == 'alpha delta gamma'注意,它用于替换字符串的部分,如果你想改变整个字符串,你不会使用它。

另外,字符串是不可变的,所以in-place选项没有意义。

你可以这样做:

{
'1. Milik Sendiri': 1,
'2. Kontrak/Sewa': 2,
'3. Bebas Sewa': 3,
'4. Dinas': 4,
'5. Lainnya': 5
}[Status_bangunan]

这基本上只是你的第二个想法,但没有替代方法。没有必要。

另一个选项是解析文本。这将在.之前提取三个部分,然后将其解析为整数:

# Parse as integer
int(
Status_bangunan
# Split into a list of strings, seperated by a `. `
.split('. ')
# Take the first part, which will thus be the part before the .
[0])

最新更新