我正在尝试从我从文本文件中检索的项目中删除括号和语音标记,但它只针对self.user
但不针对self.passw
。我想知道如何为两者做到这一点。
def check(self):
self.credentials = {}
for line in open('Passwords.txt','r'):
print('line',line)
self.user, self.passw = line.split(':')
for i in self.user:
print(i)
if i=='{' or i =='"':
print('i', i)
self.user=self.user.strip(i)
else:
pass
for j in self.passw:
print(j)
if j=='"' or j =='}'or j==' ':
print('j', j)
self.passw=self.passw.strip(j)
else:
pass
self.credentials[self.user] = self.passw
print(self.credentials)
答案 0 :(得分:2)
.strip()
仅从字符串的开头/结尾删除字符。您的算法逐个字符地逐字符串,每次遇到其中一个不需要的字符时,它会尝试从整个字符串中删除它。当然,这只适用于所有不良角色围绕好角色的情况,而且效率极低。
更好的方法是仅从通过测试的那些字符构造一个新字符串:
self.user = ''.join([c for c in self.user if c not in '{}"'])
或使用正则表达式(我更喜欢):
self.user = re.sub(r'[{}"]+', '', self.user)
请注意,我已将}
添加到不需要的字符集中,假设您也要删除该字符。