Python 3 split ('\ n')

python-3.x

3417 просмотра

1 ответ

Как разделить текстовую строку в соответствии с явным переводом строки ('\ n')?

К сожалению, вместо правильно отформатированного CSV-файла я имею дело с длинной строкой текста с "\ n", где будет символ новой строки. (пример формата: «A0, B0 \ nA1, B1 \ nA2, B2 \ nA3, B3 \ n ...») Я думал, что простой bad_csv_list = text.split('\n')даст мне список двухзначных ячеек (пример split ['A0, B0 ',' A1, B1 ',' A2, B2 ',' A3, B3 ', ...]). Вместо этого я получаю одну ячейку, и «\ n» преобразуется в «\\ n». Я попытался скопировать фрагмент строки и использовать split ('\ n'), и это работает так, как я надеялся. Оператор print для объекта file сообщает мне следующее:

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

... так что я подозреваю, что проблема с кодировкой cp1252? Следует отметить, что Notepad ++ говорит, что файл, с которым я работаю, - это «UTF-8 без BOM» ... Я посмотрел в документах и ​​вокруг SO и попытался импортировать io и кодек, а также подготовить openоператор и объявить, encoding='utf8'но я нахожусь в потеря, и я на самом деле не грок кодирования текста. Может быть, есть лучшее решение?

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

Любая помощь будет принята с благодарностью, спасибо.

Если это поможет объяснить, с чем я имею дело, вот содержимое файла 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

И результат от разделения ('\ 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']

Почему это ДОБАВЛЯЕТ?

Автор: Mr. Kennedy Источник Размещён: 08.11.2019 11:02

Ответы (1)


4 плюса

Решение

DOH !!! КОРОЛЕВСКАЯ ЛИЦА ЛИЦА! Я просто написал все это, а потом понял, что все, что мне нужно было сделать, - это поставить косую черту перед \ newline:

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

В любом случае я опубликую это, чтобы вы могли посмеяться ^ _ ^

Автор: Mr. Kennedy Размещён: 20.08.2016 07:53
Вопросы из категории :
32x32