特殊文字のリストがあります:
specialCharList=['`','~','!','@','#','$','%','^',
'&','*','(',')','-','_','+','=',
'|','','{','}','[',']',';',':',
'"',',','.','<','>','/','?',"'",'\\',' ']
ユーザーが新しい行の入力ボタンを押したときのために、ある種の文字表記を含める必要があります。「\n」を試しましたが、うまくいきませんでした。何か案は?
以下の詳細情報
すみません、指定するべきでした。基本的な暗号化/復号化アプリケーションを作成しています。文字を右に 6 桁ずらして出力します。
たとえば、abc は ghi として出力されます。たとえば、123 は 789 として出力されます。
特殊文字を使用して同じことをしました。以下のリストを使用して、それがどのように機能するかを確認してください。
specialCharList=['`','~','!','@','#','$','%','^',
'&','*','(',')','-','_','+','=',
'|','','{','}','[',']',';',':',
'"',',','.','<','>','/','?',"'",'\\',' ']
例~!^&として出力されます
暗号化するテキスト、数字、特殊文字の組み合わせをテキスト ボックスに入力するとすべて正常に動作しますが、誰かが新しい行を入力すると (たとえば、Enter キーを押すと)、エラーが発生します。
index=specialCharList.index(tbInput[i])
ValueError: u'\n' はリストにありません
完全なコードは以下のとおりです。
import wx
import os
class mainForm(wx.Frame):
def __init__(self,parent,id):
wx.Frame.__init__(self,parent,id,'Encryption Tool v2',size=(270,300))
panel=wx.Panel(self)
#Setting up controls
wx.StaticText(panel,-1,'Enter Text Below',(10,10),(200,25))
self.tbInput=wx.TextCtrl(panel,-1,'',(10,30),(250,220),wx.TE_MULTILINE)
self.rdEncrypt=wx.RadioButton(panel,-1,'Encrypt',(10,250),(200,-1))
self.rdDecrypt=wx.RadioButton(panel,-1,'Decrypt',(10,270),(200,-1))
btnExecute=wx.Button(panel,-1,'Execute',(181,252),(80,-1))
btnExecute.Bind(wx.EVT_BUTTON,self.encryptionDecryption)
def encryptionDecryption(self,event):
tbInput=self.tbInput.GetValue()
rdEncrypt=self.rdEncrypt.GetValue()
rdDecrypt=self.rdDecrypt.GetValue()
if rdEncrypt==True and tbInput!='':
#copy encryption code below
encryptedStr=''
alphabet=['X','M','y','B','e','f','N','D','i','Q',
'k','u','Z','J','s','A','q','Y','E','P','S',
'v','w','a','U','z','p','d','C','h','o','F',
'G','H','I','n','K','W','b','g','O','t','j',
'R','l','T','c','V','L','x','r','m']
specialCharList=['`','~','!','@','#','$','%','^',
'&','*','(',')','-','_','+','=',
'|','','{','}','[',']',';',':',
'"',',','.','<','>','/','?',"'",'\\',' ',]
for i in range(0,len(tbInput)):
if tbInput[i].isalpha():
index=alphabet.index(tbInput[i])
if index+6>len(alphabet)-1:
index=5+(index-(len(alphabet)-1))
encryptedStr+=alphabet[index]
else:
encryptedStr+=alphabet[index+6]
elif tbInput[i].isdigit():
if int(tbInput[i])+6>9:
encryptedStr+=str(-1+(int(tbInput[i])+6)-9)
else:
encryptedStr+=str(int(tbInput[i])+6)
else:
index=specialCharList.index(tbInput[i])
if index+6>len(specialCharList)-1:
index=5+(index-(len(specialCharList)-1))
encryptedStr+=specialCharList[index]
else:
encryptedStr+=specialCharList[index+6]
#print 'Encrypted Text: '+encryptedStr
#text file here
e=open('encryptedText.txt', 'w')
e.write(encryptedStr)
e.close()
if os.name == 'nt':
os.system('notepad ecryptedText.txt&')
elif os.name == 'posix':
os.system('gedit decryptedText.txt&')
os.system('gedit encryptedText.txt&')
elif rdDecrypt==True and tbInput!='':
#copy code for decryption below
decryptedStr=''
alphabet=['X','M','y','B','e','f','N','D','i','Q',
'k','u','Z','J','s','A','q','Y','E','P','S',
'v','w','a','U','z','p','d','C','h','o','F',
'G','H','I','n','K','W','b','g','O','t','j',
'R','l','T','c','V','L','x','r','m']
specialCharList=['`','~','!','@','#','$','%','^',
'&','*','(',')','-','_','+','=',
'|','','{','}','[',']',';',':',
'"',',','.','<','>','/','?',"'",'\\',' ']
for i in range(0,len(tbInput)):
if tbInput[i].isalpha():
index=alphabet.index(tbInput[i])
if index-6>len(alphabet)-1:
index=5+(index-(len(alphabet)-1))
decryptedStr+=alphabet[index]
else:
decryptedStr+=alphabet[index-6]
elif tbInput[i].isdigit():
if int(tbInput[i])-6<0:
decryptedStr+=str(-1+(int(tbInput[i])-6)+11)
else:
decryptedStr+=str(int(tbInput[i])-6)
else:
index=specialCharList.index(tbInput[i])
if index-6>len(specialCharList)-1:
index=5+(index-(len(specialCharList)-1))
decryptedStr+=specialCharList[index]
else:
decryptedStr+=specialCharList[index-6]
#print 'Decrypted Text: '+decryptedStr
#text file here
d=open('decryptedText.txt', 'w')
d.write(decryptedStr)
d.close()
if os.name == 'nt':
os.system('notepad ecryptedText.txt&')
elif os.name == 'posix':
os.system('gedit decryptedText.txt&')
os.system('gedit encryptedText.txt&')
else:
message=wx.MessageDialog(None, 'Please enter text for encryption/decryption','No Text Found',wx.OK|wx.ICON_INFORMATION)
message.ShowModal()
message.Destroy()
if __name__=='__main__':
encryptionToolv2=wx.PySimpleApp()
frame=mainForm(parent=None,id=-1)
frame.Show()
encryptionToolv2.MainLoop()
#usrInput=raw_input('Please enter your text.\n> ')
#eOrD=raw_input('Do you want to encrypt or decrypt? (e or d)\n> ')
#if eOrD=='e' or eOrD=='E':
# encryption()
#elif eOrD=='d' or eOrD=='D':
# decryption()