这段代码明明是对的,为什么会username不匹配

with open('b.txt',mode='rt',encoding='utf-8') as f:
    res = f.read()
    username,password = res.split(':')


inp_username = input('please input your username:').strip()

inp_password = input('please input your password:')


if inp_username == username.strip() and inp_password == password:
    print('login successful')
elif inp_username == username.strip() and inp_password != password:
    print('username or password error1')
elif inp_username != username.strip() and inp_password == password:
    print('username or password error2')
print(username,password,inp_username,inp_password)

please input your username:fang
please input your password:123
username or password error2
fang 123 fang 123

Process finished with exit code 0
 

我知道问题的所在了,从txt文件中取出来的时候,变量前自动加了个'\ufef'的前缀,我搜了搜是BOM的问题,我也不大明白其中的原理,不过将从txt文件中取出来的编码格式换成utf-8-sig就好了,不过大佬能细细讲一下其中的原理吗

inp_username.strip()试试。全部去掉前后空格。

我这运行正常啊,你是不是txt里面打的中文的冒号导致没分割出来?

with open('jisuan.txt',mode='rt',encoding='utf-8') as f:
    res = f.read()
    username, password = res.split(':')

inp_username = input('please input your username:').strip()

inp_password = input('please input your password:')

if inp_username == username.strip() and inp_password == password:
    print('login successful')
elif inp_username == username.strip() and inp_password != password:
    print('username or password error1')
elif inp_username != username.strip() and inp_password == password:
    print('username or password error2')
print(username, password, inp_username, inp_password)

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m