2016-08-20 4 views
1

Wie teile ich eine Textzeichenfolge nach einer expliziten neuen Zeile ('\ n')?Python 3 geteilt (' n')

Leider habe ich statt einer korrekt formatierten CSV-Datei eine lange Textzeichenfolge mit "\ n", wo die neue Zeile wäre. (Beispielformat: "A0, B0 \ nA1, B1 \ nA2, B2 \ nA3, B3 \ n ...") Ich dachte, eine einfache bad_csv_list = text.split('\n') würde mir eine Liste der zweiwertigen Zellen geben (Beispiel Split ['A0, B0 ',' A1, B1 ',' A2, B2 ',' A3, B3 ', ...]). Stattdessen endet ich mit einer Zelle und "\ n" wird in "\\ n" konvertiert. Ich habe versucht, einen Abschnitt der Zeichenfolge zu kopieren und mit Split ('\ n') zu verwenden, und es funktioniert, wie ich gehofft hatte. Die print-Anweisung für das Dateiobjekt sagt mir folgende:

<_io.TextIOWrapper name='stats.csv' mode='r' encoding='cp1252'> 

... so vermute ich, das Problem mit der cp1252 Codierung ist? Anmerkung tho: Notepad ++ sagt, dass die Datei, mit der ich arbeite, "UTF-8 ohne BOM" ist ... Ich habe in der Dokumentation und Umgebung gesucht und versucht, io und codec zu importieren und die open-Anweisung voranzustellen und encoding='utf8' zu deklarieren, aber ich bin es mit einem Verlust und ich nicht wirklich Textcodierung. Vielleicht gibt es eine bessere Lösung?

from sys import argv 
# import io, codec 

filename = argv[1] 
file_object = open(filename, 'r') 
# file_object = io.open(filename, 'r', encoding='utf8') 
# file_object = codec.open(filename, 'r', encoding='utf8') 
file_contents = file_object.read() 
file_list = file_contents.split('\n') 

print("1.) Here's the name of the file: {}".format(filename)) 
print("2.) Here's the file object info: {}".format(file_object)) 
print("3.) Here's all the files contents:\n{}".format(file_contents)) 
print("4.) Here's a list of the file contents:\n{}".format(file_list)) 

Jede Hilfe wäre sehr dankbar, danke.

Wenn es hilft zu erklären, was mit denen ich zu tun, hier ist der Inhalt der Datei stats.csv:

Albuquerque,749\nAnaheim,371\nAnchorage,828\nArlington,503\nAtlanta,1379\nAurora,425\nAustin,408\nBakersfield,542\nBaltimore,1405\nBoston,835\nBuffalo,1288\nCharlotte-Mecklenburg,647\nCincinnati,974\nCleveland,1383\nColorado Springs,455\nCorpus Christi,658\nDallas,675\nDenver,615\nDetroit,2122\nEl Paso,423\nFort Wayne,362\nFort Worth,587\nFresno,543\nGreensboro,563\nHenderson,168\nHouston,992\nIndianapolis,1185\nJacksonville,617\nJersey City,734\nKansas City,1263\nLas Vegas,784\nLexington,352\nLincoln,397\nLong Beach,575\nLos Angeles,481\nLouisville Metro,598\nMemphis,1750\nMesa,399\nMiami,1172\nMilwaukee,1294\nMinneapolis,992\nMobile,522\nNashville,1216\nNew Orleans,815\nNew York,639\nNewark,1154\nOakland,1993\nOklahoma City,919\nOmaha,594\nPhiladelphia,1160\nPhoenix,636\nPittsburgh,752\nPlano,130\nPortland,517\nRaleigh,423\nRiverside,443\nSacramento,738\nSan Antonio,503\nSan Diego,413\nSan Francisco,704\nSan Jose,363\nSanta Ana,401\nSeattle,597\nSt. Louis,1776\nSt. Paul,722\nStockton,1548\nTampa,616\nToledo,1171\nTucson,724\nTulsa,990\nVirginia Beach,169\nWashington,1177\nWichita,742 

Und das Ergebnis aus der Spaltung ('\ n'):

['Albuquerque,749\\nAnaheim,371\\nAnchorage,828\\nArlington,503\\nAtlanta,1379\\nAurora,425\\nAustin,408\\nBakersfield,542\\nBaltimore,1405\\nBoston,835\\nBuffalo,1288\\nCharlotte-Mecklenburg,647\\nCincinnati,974\\nCleveland,1383\\nColorado Springs,455\\nCorpus Christi,658\\nDallas,675\\nDenver,615\\nDetroit,2122\\nEl Paso,423\\nFort Wayne,362\\nFort Worth,587\\nFresno,543\\nGreensboro,563\\nHenderson,168\\nHouston,992\\nIndianapolis,1185\\nJacksonville,617\\nJersey City,734\\nKansas City,1263\\nLas Vegas,784\\nLexington,352\\nLincoln,397\\nLong Beach,575\\nLos Angeles,481\\nLouisville Metro,598\\nMemphis,1750\\nMesa,399\\nMiami,1172\\nMilwaukee,1294\\nMinneapolis,992\\nMobile,522\\nNashville,1216\\nNew Orleans,815\\nNew York,639\\nNewark,1154\\nOakland,1993\\nOklahoma City,919\\nOmaha,594\\nPhiladelphia,1160\\nPhoenix,636\\nPittsburgh,752\\nPlano,130\\nPortland,517\\nRaleigh,423\\nRiverside,443\\nSacramento,738\\nSan Antonio,503\\nSan Diego,413\\nSan Francisco,704\\nSan Jose,363\\nSanta Ana,401\\nSeattle,597\\nSt. Louis,1776\\nSt. Paul,722\\nStockton,1548\\nTampa,616\\nToledo,1171\\nTucson,724\\nTulsa,990\\nVirginia Beach,169\\nWashington,1177\\nWichita,742'] 

Warum fügt es ein \?

Antwort

3

dOh !!! ROYAL GESICHT PALME! Ich schreibe dies alles aus einem klar, dass alles, was ich tun musste, um eine Flucht vor der Schrägstrich \ newline gesetzt wurde:

file_list = file_contents.split('\\n') 

Ich bin dies würde Post sowieso so y'all ein Lachen hat^_^

+1

Ich wollte nur antworten ...; -; – u8y7541