Python:在一行中拆分、剥离和连接
我很好奇,如果他们是某种我可能不知道的巨蟒魔法来完成一点轻浮 鉴于该行:Python:在一行中拆分、剥离和连接,python,join,split,list-comprehension,trim,Python,Join,Split,List Comprehension,Trim,我很好奇,如果他们是某种我可能不知道的巨蟒魔法来完成一点轻浮 鉴于该行: csvData.append(','.join([line.split(":").strip() for x in L])) 我试图在:上拆分一行,修剪其周围的空白,然后在,上加入 问题是,由于数组是从行.split(“:”返回的,所以 for x in L #<== L doesn't exist! 对于L#中的x,类似于: >>> L = "1:2:3:4" >>> res
csvData.append(','.join([line.split(":").strip() for x in L]))
我试图在:
上拆分一行,修剪其周围的空白,然后在,
上加入
问题是,由于数组是从行.split(“:”
返回的,所以
for x in L #<== L doesn't exist!
对于L#中的x,类似于:
>>> L = "1:2:3:4"
>>> result = ",".join([item.strip() for item in L.split(":")])
>>> result
'1,2,3,4'
要掌握列表的理解需要一段时间。当您分解它们时,它们基本上只是打包的循环
所以,在学习的时候,试着把它分解成一个普通的循环,然后把它转换成一个列表理解
在您的示例中,您没有在任何地方分配行
变量,因此即使在标准循环中,这也是一个错误
>>> for x in L:
... items = line.split(":")
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
NameError: name 'line' is not defined
>>>
>>对于L中的x:
... 项目=行。拆分(“:”)
...
回溯(最近一次呼叫最后一次):
文件“”,第2行,在
名称错误:未定义名称“行”
>>>
您也可以这样做:
>>> line.replace(':',',').replace(' ','')
'a,b,c,d,e,f,gh'
给定一个字符串S:
','.join([x.strip() for x in s.split(':')])
不需要在中间构建列表是的,没错,但对于初学者来说,这可能会让人困惑。这里不需要列表理解,只需要
,'.join(x.strip()代表s.split(':'))
。没错,尽管列表理解可能会澄清部分解决方案。实际上,我更喜欢第一个答案,因为第二个对空格的定义不太可靠。第一个回答,太棒了@DSM在['''''\n','\t']中为sp设置如何:line=line.replace(sp'')
','.join([x.strip() for x in s.split(':')])