2016-09-26 8 views
-1

123|china|jack|342|usa|Nick|324345|spin|AmyPython eine lange Zeichenfolge in verschiedene Reihen

Ich möchte das Endergebnis wie folgt aufgeteilt (ich weiß, ich brauche eine neue Zeile für jedes 3-Element):

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

Danke

+0

Ich habe versucht, SQL, diese Sache zu analysieren, verwenden, aber die Datei ist zu groß, und ich bin nicht wirklich ein Experte auf Python – love233126

+0

'string.split (‚|‘)' tun werden, wenn 'string =‚123 | china | jack | 342 | usa | Nick | 324345 | drehen | Amy''. Versuchen Sie, eine neue Zeile nach 3 Elementen zu drucken. Dadurch wird Ihr Problem gelöst. –

Antwort

2
Versuchen Sie

dass:

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)] 

Dies gibt Ihnen:

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

Update: die Datei, die Datei als Zeichenfolge gehen Sie wie folgt

lesen zu lesen:

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

danke für deine hilfe – love233126

+0

froh, dass geholfen !!! – coder

+0

Sorry Stören Sie wieder Codierer, anstelle von hartem Code x = '123 | China | Jack | 342 | USA | Nick | 324345 | Spin | Amy', habe ich versucht zu verwenden x = offen ("love.txt"), habe ich ändere auch die cwd aber nichts scheint Arbeit? Python bereitet die Datei nicht vor :( – love233126

1

Es könnte getan werden, mit einer print Anweisung

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

So jetzt Schritt für Schritt

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

Vielen Dank für Ihre Hilfe – love233126

Verwandte Themen