如何在多个字符串上使用.strip?

时间:2017-11-01 10:19:28

标签: python oop dictionary text-files

我正在尝试从我从文本文件中检索的项目中删除括号和语音标记,但它只针对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)

1 个答案:

答案 0 :(得分:2)

.strip()仅从字符串的开头/结尾删除字符。您的算法逐个字符地逐字符串,每次遇到其中一个不需要的字符时,它会尝试从整个字符串中删除它。当然,这只适用于所有不良角色围绕好角色的情况,而且效率极低。

更好的方法是仅从通过测试的那些字符构造一个新字符串:

self.user = ''.join([c for c in self.user if c not in '{}"'])

或使用正则表达式(我更喜欢):

self.user = re.sub(r'[{}"]+', '', self.user)

请注意,我已将}添加到不需要的字符集中,假设您也要删除该字符。