2017-11-06 8 views
-2

私のようなワードトークンのリストを持っている:。空白(例えばと「」文字列ではなくリストの要素をリストしますか?

my_list = [[('abc, 123'), ('def, 456')], [('ghi, 789'), ('abc, 456')]] 

を、私は、このようなを交換するなど、正規表現でいくつかの前処理をしたい文字列=再。サブ(R「(、)」、「」、文字列)その後、私は別のリストに再び文字列を追加したいすべてのすべてで、私はそのように見える前処理されたリストを取得したい:。。

my_list_preprocessed = [[('abc 123'), ('def 456')], [('ghi 789'), ('abc 456')]] 

現在、私はそのように実装しようとしました:

my_list_preprocessed = [] 
for string in my_list: 
    string = re.sub(r"(,)", " ", str(string)) 
    my_list_preprocessed.append(string) 

しかし、意図した結果を得るのではなく、文字列のリストを受け取っています:

my_list = ["['abc 123', 'def 456']", "['ghi 789', 'abc 456']"] 

私の意図した結果を得るために改善することはできますか?

+4

さて、あなたは正規表現でoverkillingされています。 "、"を "と置き換えたいだけなら" mystring = mystring.replace( "、"、 "") ' –

+0

私が正しく理解すれば、あなたのリストは文字列アイテムのリストです。最も内側の文字列を反復処理する場合は、ネストループを実行する必要があります。一番外側のループは各内側のリストを反復し、最も内側のループはそのリスト内の各文字列を反復処理します。 項目をタプルにしたい場合を除いて、内部の '('と ')の括弧は実際には必要ありません。その場合は、末尾にカンマを追加する必要があります。 – bow

+0

あなたのコードに誤字が多すぎます...あなたは '[( 'abc、123')、( 'def、456')]'を試していますか? ''(abc '、' 123 ')、(' def '、' 456 ')] '..あなたが現在表示している' my_list'はタプルの要素が1つしかありません。あなたが書いたものが正しいかどうかは重要です。 – Gahan

答えて

0

私が正しくお答えしたら、アルファベットと数字を区切るカンマを削除したいと考えています。ただし、文字列とタプルではなく、カッコが冗長であることに注意してください。ここでは、あなたが望むものを達成するのに役立つと思われるいくつかの修正案があります。

my_list = [[('abc, 123'), ('def, 456')], [('ghi, 789'), ('abc, 456')]] 

my_list_preprocessed = [] 
for item in my_list: 
    item_preprocessed = [] 
    for inner_item in item: 
     inner_item = inner_item.replace(",", "") 
     item_preprocessed.append(inner_item) 
    my_list_preprocessed.append(item_preprocessed) 
print(my_list_preprocessed) 
+0

あなたのコードは '['abc 123'、 'def 456'、 'ghi 789'、 'abc 456']'を返します。出力は '' [['abc 123'、 'def 456']、['ghi 789'、 'abc 456']] ' – ammarx

+0

です。@ammarxの修正をありがとう –

0

あなたはあなたが望むものを手に入れるために、リストの内包表記を使用することができます。

my_list = [[('abc, 123'), ('def, 456')], [('ghi, 789'), ('abc, 456')]] 

my_list_preprocessed = [[x[0].replace(',', ''), x[1].replace(',','')] for x in my_list] 

しかし、この操作の出力があることに注意してください:

[['abc 123', 'def 456'], ['ghi 789', 'abc 456']] 

なく

[[('abc 123'), ('def 456')], [('ghi 789'), ('abc 456')]] 

これは、tu 1つの項目で構成することはできません。タプルが本当に必要な場合は、次のコードを使用してください。

my_list_preprocessed = [[(x[0].replace(',', ''),), (x[1].replace(',',''),)] for x in my_list] 

追加されたコンマが表示されます。これらは、1つの項目だけを含むタプルを作成するために使用されます。

0

入力:

my_list = [[('abc, 123'), ('def, 456')], [('ghi, 789'), ('abc, 456')]] 

コード:

import re 
my_list_preprocessed = map(lambda x:map(lambda y:re.sub(r',',' ',y),x),my_list) 

出力:

[['abc 123', 'def 456'], ['ghi 789', 'abc 456']] 
関連する問題