2016-12-08 12 views
0

各リストの要素3はリスト(括弧内)です。私はelement3を 'store1.txt'という文字列ではない 'store1.txt'という文字列にします。Pythonリストから文字列へ

store_list = [["Freds", "store1"], ["Sams", "store2"], ["Johns", "store3"], ["Toms", "store4"]] 
urls_list = ['store1.txt', 'store2.txt', 'store3.txt', 'store4.txt', 'store5.txt', 'store6.txt'] 
ls = [] 
for x in store_list: 
    str_num = x[1] 
    matching = [s for s in urls_list if str_num in s] 
    x.insert(3, matching) 
    ls.append(x) 
for i in ls: 
    print i 
+0

両方ettananyとrassarの答えは、私の例では動作しますが、彼らは私の実際のスクリプトでは動作しません。一致する行の最後に[0]を追加すると、IndexError:listインデックスが範囲外になります。 .pop()を追加すると、空のリストからIndexError:popが取得されます。一言もありませんが、コードを実行しないでコードを実行すると、その要素にリストが返されます。 – precastnick

+0

私は今理解しています。リストの一部は、不適切に生成されたため空であるため、空のリストをポップすることはできません。 awesomenessについてもう一度おねがいします。 – precastnick

答えて

1

変更する第6行:

matching = [s for s in urls_list if str_num in s][0] 

は、リストの内包が自動的にリストを作成するので、あなたは、あなただけの文字列をしたい場合は、そのリストの最初の値を取る必要があります。

+0

素敵なラッサール。ありがとうございました。 – precastnick

0

matchingがリストである、あなたはこのようなあなたの要素を取得するためにpop()を使用することができます。

x.insert(3, matching.pop()) 
+0

ありがとうございました。これもうまくいった。 – precastnick

関連する問題