web-dev-qa-db-ja.com

Python:1行で分割、削除、結合

それらがいくつかのpython魔法であるかどうか私は少しの軽薄さを達成することを知らないかもしれません

与えられた行:

_csvData.append(','.join([line.split(":").strip() for x in L]))
_

_:_で行を分割し、その周りの空白を削除して、_,_で結合しようとしています。

問題は、配列がline.split(":")から返されるため、

_for x in L #<== L doesn't exist!
_

line.split(":")によって返される配列の名前がないため、問題が発生します

だから、これを一発で達成するために使用できるセクシーな構文があるかどうか知りたいですか?

乾杯!

>>> line = 'a: b :c:d:e  :f:gh   '
>>> ','.join(x.strip() for x in line.split(':'))
'a,b,c,d,e,f,gh'

これを行うこともできます:

>>> line.replace(':',',').replace(' ','')
'a,b,c,d,e,f,gh'
24
Burhan Khalid

与えられた文字列S:

','.join([x.strip() for x in s.split(':')])
1
arturhoo

何かのようなもの?:

>>> L = "1:2:3:4"
>>> result = ",".join([item.strip() for item in L.split(":")])
>>> result
'1,2,3,4'

リスト内包表記を把握するには時間がかかります。それらを分解すると、基本的にはパッケージ化されたループになります。

したがって、学習するときは、通常のループとして分解してから、リスト内包表記に変換してください。

あなたの例では、どこにもline変数を割り当てていないので、標準のループでもエラーになります。

>>> for x in L:
...     items = line.split(":")
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
NameError: name 'line' is not defined
>>>
1
monkut