2017-12-23 14 views
-3

"phonenumbers"という以下のリストがあります。私は '\ n \ t \ t \ t'と '\ n \ t \ t \ t \ t'を含む要素を削除するのに苦労します。 "try and except" -methodeを試みて( '\ n \ t \ t \ t \ t \ t')、それを動作させることができませんでした。 ヒント?リストから '\ 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'、 '\ n \ t \ t \ t'、 '(02181)27 0'、 '\ n \ t \ 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 \ 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 \ \ n \ t \ t \ t '、' 3-0 '、' \ n \ t \ t \ t '、' \ n \ \ n \ t \ t \ t '、' 3-0 '、' \ n \ t \ t \ t '、' \ n \ \ n \ t \ t \ t \ t '、' 30 '、' \ n \ t \ t \ t '、' \ n \ t \ '、'(02235)9 23 04 ' \ t \ 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 \ 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'、 '\' \ 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 ' \ n \ t \ t \ t '、' 47 '、' \ n \ t \ t \ t '、' \ n \ t \ t \ t '、'(02181)2 78 11 ' (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 '\ n \ t \ t \ t'、 '60'、 '\ n \ t \ t \ t'、 '\ n \ t \ t \ t'、 '(0211)23 80' '\ n \ t \ t \ t'、 '70'、 '\ n \ t \ t \ t'、 '\ n \ t \ t \ t'、 '(0211)23 80'、 '\ n \ 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 ']

+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

あなたは文字のことがallc)での試験過去に、それぞれが持っているstringsのリストを作成するlist-comprehensionを使用することができ

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

なぜ投票が拒否されましたか、投票中はコメントしてください。 –

0

、次のように試してみてくださいstringin'\t\n'です。私はこれが唯一のtabsnewlinesが含まれていることstringsのために働く最も効率的、汎用的なソリューションだと思い、それはPythonでも、非常に読みやすいです:

['(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)] 


また、短いですが、おそらく(私はわからないんだけど100%わずか遅くなると思われるstr.isspace()を使用することができます同じ結果を与える

[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

すべてのあなたの答えのみんなありがとう。私はそれらすべてを試みたが、誰も私のために働いた。おそらく私のリストisnt "本当の"リストですか? @ 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

関連する問題