2017-12-23 9 views
-3

"phonenumbers"라는 다음 목록이 있습니다. '\ n \ t \ t \ t'및 '\ n \ t \ t \ t \ t'을 포함하는 요소를 제거하는 데 어려움을 겪고 있습니다. "시도하고 예외"- 시도하고 ('\ n \ t \ t \ t \ t') 제거하지만 couldnt 작동하도록. 팁이 있습니까?목록에서 '\ n \ t \ t \ t'요소를 제거하십시오.

[ '(02271) 6 79', '70', '\ n \ t \ t \ t', '(02271) 6 79', '\ n \ t \ t \ t \ t' , '\ n \ t \ t \ t', '\ n \ t \ t \ t', '(02181) 27 0', '\ n \ t \ t \ t \ t', '3 '0', '\ n \ t \ t \ t', '(02181) 27 0', '\ n \ t \ t \ t' \ n \ t \ t \ t ','(02161) 24 19 ','\ n \ t \ t \ t \ t ','40 ',' '\ n \ t \ t \ t', '(02161) 24 19', '\ n \ t \ t \ t \ t', '40', '\ n \ n \ t \ t \ t ','(02131) 66 67 ','\ n \ t \ t \ t \ t ','10 ', \ n \ t \ \ n \ t \ t ','(02131) 66 67 ','\ n \ t \ t \ t \ t ','10 ','\ n \ t \ t \ t ','(02103) 39 00 ','\ n \ t \ t \ t \ t ','93 ','\ n \ t \ t \ t ',' \ n \ t \ t \ t ','(02103) 39 00 ','\ n \ t \ t \ t \ t ','93 ','\ n \ t \ t \ t ' \ n \ t \ t \ t \ t ','3-0 ','\ n \ t \ t \ t ','\ n \ \ n \ t \ t \ t \ t ','3-0 ','\ n \ t \ t \ t ','\ n \ \ n \ t \ t \ t \ t ','30 ','\ n \ t \ t \ t ','\ n \ t \ t ','(02235) 9 23 04 ' \ t \ t ','(02235) 9 23 04 ','\ n \ t \ t \ t \ t ','30 ' '\ n \ t \ t \ t', '\ n \ t \ t \ t', '\ n \ t \ t \ t \ t', '(0221) 3 46 79 40', '\ n \ t \ n \ t \ t \ t ','(0221) 3 46 79 40 ','\ n \ t \ t \ t ' '\ n \ t \ t \ t', '(02232) 4 23', '\ n \ t \ t \ t \ t', '05' \ n \ t \ t \ t ','05 ','\ n \ t \ t \ t ','\ t \ t ','(02232) 4 23 ' \ t \ t ','(0157) 86 85 74 ','\ n \ t \ t \ t \ t ','43 ','\ n \ t \ t \ t ','\ n \ t \ t \ t ','(0157) 86 85 74 ','\ n \ t \ t \ t \ t ','43 ','\ n \ t \ t \ t ','\ n \ t \ t \ t ','(02181) 2 78 11 ','\ n \ t \ t \ t \ t ','47 ','\ n \ t \ t \ t ','\ n \ t \ t \ t ' '(02181) 2 78 11', '\ n \ t \ t \ t \ t', '47', '\ n \ t \ t \ t', '\ n \ t \ t \ t', ' 0 \ n \ t \ t \ t ','0-0 ','\ n \ t \ t \ t ','\ n \ t \ t \ t ',' 0 \ n \ t \ t \ t ','0-0 ','\ n \ t \ t \ t ','\ n \ t \ t \ t ',' 02202) 1 88 ','\ n \ t \ t \ t \ t ','60 ','\ n \ t \ t \ t ','\ n \ t \ t \ t ','(02202) 1 t \ t ','(0211) 23 80 ','\ n \ t \ t \ t ',' '\ n \ t \ t \ t', '70', '\ n \ t \ t \ t', '\ n \ t \ t \ t', '(0211) 23 80', '\ n \ t \ t \ t ','70 ','\ n \ t \ t \ t ','\ n \ t \ t \ t ','(02235) 9 23 0 ','\ n \ t \\ \ t \ t ','4-0 ','\ n \ t \ t \ t ','\ n \ t \ t \ t ','(02235) 9 23 0 ','\ n \ t \ t \ t \ t ','4-0 ','\ n \ t \ t의 \의 t ']

+0

여러분이 시도한 것을 게시하고 누군가가 문제를 해결하도록 도울 수 있습니다. –

+0

아마도 항목을 제거하는 대신 목록을 생성하는 코드를 수정하여 처음에 삽입하지 않도록해야합니다. 이 목록은 어떻게 생성됩니까? –

+0

@Bryan Oakley는 먼저 Qt로 페이지를 렌더링 한 다음 lxml을 사용하여 tree.xpath를 통해 목록을 추출합니다. phonenumbers = tree.xpath ('// span [@ class = "text nummer_ganz"] // text() ') - 웹 사이트 : https://www.gelbeseiten.de/schluesselfertigbau/bergheim,,,,umkreis-50000/s1 – DanielHe

답변

0

result = [i for i in lst if not i.endswith('\t\t')] 
+1

왜 투표가 실패했는지, 투표를하는 동안 의견을 남겨주세요. –

0

각 하나에 테스트 과거이 곳 strings의 목록을 작성하기 위해 list-comprehension을 사용할 수 있습니다,이 같은 시도가 문자 (c)에서의 allstringin : '\t\n'입니다. 나는이 만 tabsnewlines를 포함하는 strings을 위해 작동 할 가장 효율적인 범용 솔루션이라고 생각, 파이썬도 매우 읽을 수 :

['(02271) 6 79', ' 70', '(02271) 6 79', ' 70', '(02181) 27 0', '3-0', '(02181) 27 0', '3-0', '(02161) 24 19', ' 40', '(02161) 24 19', ' 40', '(02131) 66 67', ' 10', '(02131) 66 67', ' 10', '(02103) 39 00', ' 93', '(02103) 39 00', ' 93', '(02173) 2 04 7', '3-0', '(02173) 2 04 7', '3-0', '(02235) 9 23 04', ' 30', '(02235) 9 23 04', ' 30', '(0221) 3 46 79 40', '(0221) 3 46 79 40', '(02232) 4 23', ' 05', '(02232) 4 23', ' 05', '(0157) 86 85 74', ' 43', '(0157) 86 85 74', ' 43', '(02181) 2 78 11', ' 47', '(02181) 2 78 11', ' 47', '(02181) 47 49 0', '0-0', '(02181) 47 49 0', '0-0', '(02202) 1 88', ' 60', '(02202) 1 88', ' 60', '(0211) 23 80', ' 70', '(0211) 23 80', ' 70', '(02235) 9 23 0', '4-0', '(02235) 9 23 0', '4-0'] 
: 정확한 결과를 제공

[i for i in lst if all(c not in '\t\n' for c in i)] 


또한 짧은 str.isspace()를 사용할 수 있지만, 아마 (나는 확실 100% 아니에요) 할 수 약간 느린 동일한 결과를 제공

[i for i in lst if not i.isspace()] 

: 그것은 모든whitespace 문자를 확인한다.

+0

왜 downvote? –

1

당신은 Python에서

^\s+$ 

같은 간단한 표현 갈 수 :

import re 

lst = ['(02271) 6 79', ' 70', '\n\t\t\t', '(02271) 6 79', '\n\t\t\t\t', ' 70', '\n\t\t\t', '\n\t\t\t', '(02181) 27 0', '\n\t\t\t\t', '3-0', '\n\t\t\t', '\n\t\t\t', '(02181) 27 0', '\n\t\t\t\t', '3-0', '\n\t\t\t', '\n\t\t\t', '(02161) 24 19', '\n\t\t\t\t', ' 40', '\n\t\t\t', '\n\t\t\t', '(02161) 24 19', '\n\t\t\t\t', ' 40', '\n\t\t\t', '\n\t\t\t', '(02131) 66 67', '\n\t\t\t\t', ' 10', '\n\t\t\t', '\n\t\t\t', '(02131) 66 67', '\n\t\t\t\t', ' 10', '\n\t\t\t', '\n\t\t\t', '(02103) 39 00', '\n\t\t\t\t', ' 93', '\n\t\t\t', '\n\t\t\t', '(02103) 39 00', '\n\t\t\t\t', ' 93', '\n\t\t\t', '\n\t\t\t', '(02173) 2 04 7', '\n\t\t\t\t', '3-0', '\n\t\t\t', '\n\t\t\t', '(02173) 2 04 7', '\n\t\t\t\t', '3-0', '\n\t\t\t', '\n\t\t\t', '(02235) 9 23 04', '\n\t\t\t\t', ' 30', '\n\t\t\t', '\n\t\t\t', '(02235) 9 23 04', '\n\t\t\t\t', ' 30', '\n\t\t\t', '\n\t\t\t', '\n\t\t\t\t', '(0221) 3 46 79 40', '\n\t\t\t', '\n\t\t\t', '\n\t\t\t\t', '(0221) 3 46 79 40', '\n\t\t\t', '\n\t\t\t', '(02232) 4 23', '\n\t\t\t\t', ' 05', '\n\t\t\t', '\n\t\t\t', '(02232) 4 23', '\n\t\t\t\t', ' 05', '\n\t\t\t', '\n\t\t\t', '(0157) 86 85 74', '\n\t\t\t\t', ' 43', '\n\t\t\t', '\n\t\t\t', '(0157) 86 85 74', '\n\t\t\t\t', ' 43', '\n\t\t\t', '\n\t\t\t', '(02181) 2 78 11', '\n\t\t\t\t', ' 47', '\n\t\t\t', '\n\t\t\t', '(02181) 2 78 11', '\n\t\t\t\t', ' 47', '\n\t\t\t', '\n\t\t\t', '(02181) 47 49 0', '\n\t\t\t\t', '0-0', '\n\t\t\t', '\n\t\t\t', '(02181) 47 49 0', '\n\t\t\t\t', '0-0', '\n\t\t\t', '\n\t\t\t', '(02202) 1 88', '\n\t\t\t\t', ' 60', '\n\t\t\t', '\n\t\t\t', '(02202) 1 88', '\n\t\t\t\t', ' 60', '\n\t\t\t', '\n\t\t\t', '(0211) 23 80', '\n\t\t\t\t', ' 70', '\n\t\t\t', '\n\t\t\t', '(0211) 23 80', '\n\t\t\t\t', ' 70', '\n\t\t\t', '\n\t\t\t', '(02235) 9 23 0', '\n\t\t\t\t', '4-0', '\n\t\t\t', '\n\t\t\t', '(02235) 9 23 0', '\n\t\t\t\t', '4-0', '\n\t\t\t'] 

rx = re.compile(r'^\s+$') 

lst = [item.strip() for item in lst if not rx.match(item)] 
print(lst) 

이 수율을하고 시작부터 끝까지 단 공백이 아닌 모든 숫자를 제거합니다 :

['(02271) 6 79', '70', '(02271) 6 79', '70', '(02181) 27 0', '3-0', '(02181) 27 0', '3-0', '(02161) 24 19', '40', '(02161) 24 19', '40', '(02131) 66 67', '10', '(02131) 66 67', '10', '(02103) 39 00', '93', '(02103) 39 00', '93', '(02173) 2 04 7', '3-0', '(02173) 2 04 7', '3-0', '(02235) 9 23 04', '30', '(02235) 9 23 04', '30', '(0221) 3 46 79 40', '(0221) 3 46 79 40', '(02232) 4 23', '05', '(02232) 4 23', '05', '(0157) 86 85 74', '43', '(0157) 86 85 74', '43', '(02181) 2 78 11', '47', '(02181) 2 78 11', '47', '(02181) 47 49 0', '0-0', '(02181) 47 49 0', '0-0', '(02202) 1 88', '60', '(02202) 1 88', '60', '(0211) 23 80', '70', '(0211) 23 80', '70', '(02235) 9 23 0', '4-0', '(02235) 9 23 0', '4-0'] 


@dawg po 사실, 정규 표현식은 실제로 필요하지 않습니다. 실제로는 :

+0

모든 답변을 주셔서 감사합니다. 나는 그들 모두를 시험해 보았지만 아무도 나를 위해 일하지 않았다. 아마 내 목록은 "진짜"목록이 아닐까요? @ Jan 내가 정의한 "lst"목록을 사용할 때 작동합니다. 하지만 lst = phonenumbers라고 쓸 때 ... 내 목록은 Qt로 페이지를 렌더링 한 다음 lxml을 사용하여 tree.xpath를 통해 목록을 추출합니다. phonenumbers = tree.xpath ('// span [@ class = "text nummer_ganz"] // text() ') - 웹 사이트 : gelbeseiten.de/schluesselfertigbau/bergheim,,,,,umkreis-5000 0/s1 – DanielHe