2016-09-26 47 views
-1

123|china|jack|342|usa|Nick|324345|spin|Amy蟒蛇長字符串分割成不同的行

我想這樣的最終結果(我知道我需要每3元素的新線):

123,china,jack 
342,usa,Nick 
324345,spin,Amy 

謝謝

+0

我不得不使用SQL來分析這件事情的嘗試,但文件太大,我沒有真正的蟒蛇 – love233126

+0

'string.split一個專家(「|」)'會做,如果'字符串=「123 | china | jack | 342 | usa | Nick | 324345 | spin | Amy''。嘗試在3元素後打印新行它將解決您的問題。 –

回答

2

試一下:

x = '123|china|jack|342|usa|Nick|324345|spin|Amy' 

l = x.split('|') 
new_l = [l[i:i+3] for i in range(0,len(l),3)] 

這會給你:

>>> for i in new_l: 
...  print ','.join(i) 
... 
123,china,jack 
342,usa,Nick 
324345,spin,Amy 

更新:讀取文件

讀取該文件作爲字符串執行以下操作:

with open('your_file.txt', 'r') as myfile: 
    x=myfile.read().replace('\n', '|') 
+0

感謝您的幫助 – love233126

+0

很高興幫助! – coder

+0

抱歉打擾你再次編碼器,而不是硬代碼x ='123 | china | jack | 342 | usa |尼克| 324345 | spin |艾米',我試過使用x = open(「love.txt」),我有也改變了CWD,但似乎沒有工作? python是不準備文件:( – love233126

1

它可以用一個print語句來完成

>>> d = '123|china|jack|342|usa|Nick|324345|spin|Amy' 
>>> l = d.split('|') 
>>> print(*list(map(lambda v: ','.join(v),[l[x: x+3] for x in range(0, len(l), 3)])), sep='\n') 
123,china,jack 
342,usa,Nick 
324345,spin,Amy 

所以現在一步一步

>>> d = '123|china|jack|342|usa|Nick|324345|spin|Amy' 
>>> l = d.split('|') # splitting input string into list of str objects that separated with '|' 
>>> l 
['123', 'china', 'jack', '342', 'usa', 'Nick', '324345', 'spin', 'Amy'] 
>>> [l[x: x+3] for x in range(0, len(l), 3)] # combining elements by 3 
[['123', 'china', 'jack'], ['342', 'usa', 'Nick'], ['324345', 'spin', 'Amy']] 
>>> list(map(lambda v: ','.join(v),[l[x: x+3] for x in range(0, len(l), 3)])) # merging every sublist to str with ',' as separator 
['123,china,jack', '342,usa,Nick', '324345,spin,Amy'] 
>>> print(*list(map(lambda v: ','.join(v),[l[x: x+3] for x in range(0, len(l), 3)])), sep='\n') # final print 
123,china,jack 
342,usa,Nick 
324345,spin,Amy 
+0

感謝您的幫助 – love233126