それらがいくつかの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'
与えられた文字列S:
','.join([x.strip() for x in s.split(':')])
何かのようなもの?:
>>> 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
>>>