3

私はこのリストを持っています:

[('', '', '654', 'Tom', '- Jerry', '', '', ''),
 ('', '', '', '', '', '756', 'X-Man -', 'Batman'), 
 ('453', 'Hulk - Superman', '', '', '', '', '', '')]

不要な(ほとんどが外側の)文字を削除して、次のようにするにはどうすればよいですか。

[('654', 'Tom' , '- Jerry'), 
 ('756', 'X-man' -', Batman'),
 ('435','Hulk - Superman')]

.strip()タプルなので、この方法は使えないと思います

ありがとう。

4

5 に答える 5

6

使用filter(); デフォルトでは「空の」(falsey)値を削除します。

[tuple(filter(None, tp)) for tp in inputlist]

デモ:

>>> [tuple(filter(None, tp)) for tp in inputlist]
[('654', 'Tom', '- Jerry'), ('756', 'X-Man -', 'Batman'), ('453', 'Hulk - Superman')]
于 2013-03-09T09:13:43.127 に答える
6

これを試して:

>>> t = [('', '', '654', 'Tom', '- Jerry', '', '', ''),
         ('', '', '', '', '', '756', 'X-Man -', 'Batman'),
         ('453', 'Hulk - Superman', '', '', '', '', '', '')]

>>> [tuple(filter(None, i)) for i in t]
[('654', 'Tom', '- Jerry'), ('756', 'X-Man -', 'Batman'), ('453', 'Hulk - Superman')]

filter(None, i)Falseの-ish値を削除しi、空でない文字列のみを残します。


0、、および空のコンテナ(たとえばFalse、など)は-ish値です。None[]''False

于 2013-03-09T09:14:01.000 に答える
4

空の文字列を削除しようとしている場合は、フィルターをお勧めします。

In [4]: myList = [('', '', '654', 'Tom', '- Jerry', '', '', ''), ('', '', '', '', '', '756', 'X-Man -', 'Batman'), ('453', 'Hulk - Superman', '', '', '', '', '', '')]

In [5]: [tuple(itertools.ifilter(None, t)) for t in myList]
Out[5]: 
[('654', 'Tom', '- Jerry'),
 ('756', 'X-Man -', 'Batman'),
 ('453', 'Hulk - Superman')]
于 2013-03-09T09:14:12.563 に答える
0

この短いことを試してください...

lst = [tuple(i for i in tpl if i) for tpl in lst]
于 2013-03-09T17:01:05.807 に答える
0

あなたのリストで次のコードを試してみましたが、動作しています:

list1 = [('', '', '654', 'Tom', '- Jerry', '', '', ''), ('', '', '', '', '', '756', 'X-Man -', 'Batman'), ('453', 'Hulk - Superman', '', '', '', '', '', '')]  ##you can add the elements as you want
tuple2 =()
for i in range(len(list1)):
   if type(list1[i]) == tuple:
       k = 0
       for e in list1[i]:
           if not e == ' ' and not e == '':
               tuple2 = tuple2 + (e,)
               k+=1

       list1[i] = tuple2

print list1

それがすることは次のとおりです。

  1. 要素の型がタプルかどうかをチェックします
  2. 次に、タプル内のすべての要素について、スペースの場合は無視され、それ以外の場合はタプルに追加されます
  3. 最後に、これは前のタプルの代わりに割り当てられます

これは私が得た出力です:

>>> list1
[('654', 'Tom', '- Jerry'), ('654', 'Tom', '- Jerry', '756', 'X-Man -', 'Batman'), ('654', 'Tom', '- Jerry', '756', 'X-Man -', 'Batman', '453', 'Hulk - Superman')]
于 2013-03-09T09:38:30.737 に答える