所以我试图将用户通过表单输入的数据更改为字符串。
这是组合框
的代码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])