2014-01-24 21 views
6

Ich versuche, eine Kopie/eingefügt Text in eine CSV, die ich nach teilen kann. Das Problem ist, dass es Leerzeichen Registerkarten darin, dass ich kippe vonPython Split-String auf Leerzeichen

Beispiel Copy/Paste zu erhalten scheinen loszuwerden:

Amarr Hybrid Tech Decryptor 12 Decryptors - Hybrid   12 m3 
Ancient Coordinates Database 23 Sleeper Components   2.30 m3 
Caldari Hybrid Tech Decryptor 17 Decryptors - Hybrid   17 m3 
Carbon 17 General   34 m3 
Cartesian Temporal Coordinator 4 Ancient Salvage   0.04 m3 
Central System Controller 2 Ancient Salvage   0.02 m3 

Jetzt versuche ich, so etwas zu bekommen:

Amarr Hybrid Tech Decryptor,12,Decryptors - Hybrid,12,m3, 
Ancient Coordinates Database,23,Sleeper Components,2.30,m3, 
Caldari Hybrid Tech Decryptor,17,Decryptors - Hybrid,17,m3, 
Carbon,17,General,34,m3, 
Cartesian Temporal Coordinator,4,Ancient Salvage,0.04,m3, 
Central System Controller,2,Ancient Salvage,0.02,m3, 

(immer diese 5 Trennungen pro Zeile sein

ich dies auf verschiedene Weise zu tun haben versucht Split by comma and strip whitespace in Python aber ich kann nicht scheinen, es zur Arbeit zu bringen.

@login_required 
def index(request): 
    if request.method == "POST": 
     form = SellListForm(request.POST) 
     if form.is_valid(): 
      selllist = form.save(commit=False) 
      selllist.user = request.user 
      string = selllist.sell 
      string = [x.strip() for x in string.split(',')] 
      print string 
      return HttpResponseRedirect(reverse('processed')) 
    else: 
     form = SellListForm() 
    return render(request, 'index.html', {'form': form}) 

kehrt

[u'<<<SULTS STUFF>>>\t\t\tVoucher\t\t\t0 m3\r\nAmarr Hybrid Tech Decryptor\t12\tDecryptors - Hybrid\t\t\t12 m3\r\nAncient Coordinates Database\t23\tSleeper Components\t\t\t2.30 m3\r\nCaldari Hybrid Tech Decryptor\t17\tDecryptors - Hybrid\t\t\t17 m3\r\nCarbon\t17\tGeneral\t\t\t34 m3\r\nCartesian Temporal Coordinator\t4\tAncient Salvage\t\t\t0.04 m3\r\nCentral System Controller\t2\tAncient Salvage\t\t\t0.02 m3'] 
+1

Bitte schreiben Sie den Code hier. – aIKid

+1

mögliche Duplikate von [wie in Python, um eine Zeichenfolge mit unbekannter Anzahl von Leerzeichen als Trennzeichen zu trennen?] (Http://stackoverflow.com/questions/4309684/how-in-python-to-split-a-string-with- unknown-number-of-spaces-as-separator) – tripleee

+0

Die Antwort auf die Verwendung von Split ohne Parameter, wie mehrere frühere Fragen auf dieser Website zeigen – Mawg

Antwort

8

Ich sehe, dass Sie manchmal mehrere \t haben. Ich würde das re Modul verwenden, um richtig zu teilen:

for line in lines: 
    linedata = re.split(r'\t+', line) 
    print ",".join(linedata) 
+0

Mit Zeile, meinen Sie 1 Zeile der Kopie einfügen? (So ​​handle das pro Zeile)? –

+0

Ja, tut mir leid. 'line' ist eine Zeile Ihrer Datei. Ich habe das Beispiel geändert, um deutlicher zu sein –

2

Sie können split auf Registerkarten:

line = line.split('\t') 

Sofern Sie besonders Notwendigkeit die kommagetrennte Werte, können Sie einfach Ihren Text direkt in eine Datei einfügen , open es, split auf den Registerkarten und verwenden Sie die Daten ohne jemals Kommas einzuführen.

Verwandte Themen