12

我很好奇他们是否是一些我可能不知道完成一点轻浮的蟒蛇魔法

给定行:

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

我试图在 上分割一条线:,修剪它周围的空白,然后加入,

问题是,由于数组是从 中返回的line.split(":"),所以

for x in L #<== L doesn't exist!

导致问题,因为我没有返回的数组的名称line.split(":")

所以我很好奇是否有一种性感的语法可以用来一次性完成这个任务?

干杯!

4

3 回答 3

29
>>> 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'
于 2012-09-12T04:54:23.213 回答
1

就像是?:

>>> 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
>>>
于 2012-09-12T04:53:56.627 回答
1

给定一个字符串 S:

','.join([x.strip() for x in s.split(':')])
于 2012-09-12T04:55:26.280 回答