Python:拆分,剥离和连接在一行中

时间:2012-09-12 04:51:02

标签: python join split list-comprehension trim

我很好奇,如果他们是一些蟒蛇魔法我可能不知道要完成一点轻浮

给出了这一行:

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

我正在尝试在:上拆分一行,修剪它周围的空白,然后加入,

问题是,因为数组是从line.split(":")返回的,所以

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

导致问题,因为我没有line.split(":")

返回的数组的名称

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

干杯!

3 个答案:

答案 0 :(得分:23)

>>> 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'

答案 1 :(得分: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
>>>

答案 2 :(得分:1)

给出字符串S:

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