登錄、註冊、刪除小練習
阿新 • • 發佈:2019-01-12
print 一個 報錯 and 轉載 use 正則表達 正則表達式 tab SyntaxError: (unicode error) ‘unicodeescape‘ codec can‘t decode bytes in position 14-15: truncated \uXXXX escape
#編寫過程中遇到的問題:
SyntaxError: (unicode error) ‘unicodeescape‘ codec can‘t decode bytes in position 14-15: truncated \uXXXX escape
window 讀取文件可以用\,但是在字符串中\是被當作轉義字符來使用,所以’d:\a.txt’會被轉義成’d:\a.txt’這是正確路徑,所以不會報錯。而‘E:\DSX\LX\day4\username.txt‘
中經過轉義之後可能就找不到路徑的資源了,例如:\u可能轉成unicode字符串了,所以導至路徑找不到報錯誤;
兩咱解決辦法:1、在路徑中加\\;2、在路徑前面加r:r‘E:\DSX\LX\day4\username.txt‘;
r/R:非轉義的原始字符串
與普通字符相比,其他相對特殊的字符,其中可能包含轉義字符,即那些,反斜杠加上對應字母,表示對應的特殊含義的,比如最常見的”\n”表示換行,”\t”表示Tab等。而如果是以r開頭,那麽說明後面的字符,都是普通的字符了,即如果是“\n”那麽表示一個反斜杠字符,一個字母n,而不是表示換行了。
以r開頭的字符,常用於正則表達式,對應著re模塊。
---------------------
作者:SmallisBig
來源:CSDN
原文:https://blog.csdn.net/u010496169/article/details/70045895
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
user_info = {} #存放所有的用戶 with open(‘E:\DSX\LX\day4\\username.txt‘) as f: for line in f: # niuhanyang,123456\n line = line.strip() temp = line.split(‘,‘) username = temp[0] pwd = temp[1] user_info[username]=pwd for i in range(3): choice = input(‘請輸入你的選擇‘ ‘1、登錄 2、註冊 3、刪除‘).strip() if choice==‘1‘: username = input(‘username:‘).strip() pwd = input(‘pwd:‘).strip() if username and pwd: if username in user_info: if user_info.get(username)==pwd: #get獲取的value值=pwd print(‘登錄成功‘) else: print(‘賬號密碼錯誤!‘) else: print("user not found!") else: print(‘賬號密碼不能為空!‘) elif choice==‘2‘: username = input(‘username:‘).strip() pwd = input(‘pwd:‘).strip() cpwd = input(‘cpwd:‘).strip() if username and pwd and cpwd: if username in user_info: print(‘該用戶已經被註冊!‘) else: if pwd==cpwd: user_info[username]=pwd print(‘恭喜,註冊成功!‘) print(user_info) else: print(‘兩次輸入的密碼不一致!‘) else: print(‘不能為空!‘) elif choice==‘3‘: username = input(‘username:‘).strip() if username: if username in user_info: user_info.pop(username) print(‘刪除成功!‘) else: print(‘不能為空!‘) else: print("輸入有誤,請重新輸入") else: with open(‘users.txt‘,‘a+‘) as fw: fw.seek(0) for usname,pwd in user_info.items(): fw.write(usname+‘,‘+pwd+‘\n‘)
登錄、註冊、刪除小練習