2017-11-01 2 views
-2

텍스트 파일에서 검색하는 항목에서 대괄호 및 음성 표시를 제거하려고 시도하지만 self.user에 대해서만 수행하지만 self.passw에 대해서는 수행하지 않습니다. 나는 내가 그것을 어떻게 할 수 있는지 알고 싶다..strip을 여러 문자열에서 사용하는 방법?

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

입력 파일의 예를 보여줄 수 있습니까? – Dmitry

+0

나는 주된 문제를 분류했다. –

답변

2

.strip()은 문자열의 시작/끝에서 문자를 제거합니다. 알고리즘은 문자 단위로 문자열을 통과하며, 원치 않는 문자 중 하나를 만날 때마다 전체 문자열에서 해당 알고리즘을 제거하려고 시도합니다. 물론 모든 나쁜 문자가 좋은 문자를 둘러 쌓는 경우에만 작동하며 매우 비효율적입니다.

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

또는 정규 표현식 (내가 선호하는 거라고하는) 사용하기 :

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

더 좋은 방법은 테스트를 통과하는 문자에서 새로운 문자열을 contruct하는 것 원하지 않는 문자 세트에 }을 추가했음을 유의하십시오.이 문자도 제거하려고한다고 가정하십시오.

+0

블랙리스트에 공간을 추가 할 수 있지만 공간을 제거하려고 시도했지만 제거되지 않았습니다. –

+0

그 외 부탁드립니다. –

+0

물론, 그냥/regex 문자열에 추가하십시오. –