Я использую этот код для разделения данных, чтобы составить список с тремя подсписками. раскол, когда есть * или -. но он также читает \n\n *.. не знаю почему? Я не хочу их читать? может кто-нибудь сказать мне, что я делаю неправильно? это данные
* Цитата дня -Образование - это способность слушать почти все, не теряя самообладания или уверенности в себе - Роберт Фрост -Образование - это то, что выживает, когда то, что было изучено, было забыто - Б. Ф. Скиннер * Факт дня -Фракталы, важная часть теории хаоса, очень полезны при изучении огромного количества областей. Они присутствуют на природе, и поэтому их можно использовать для прогнозирования многих вещей в природе. Они также могут помочь имитировать природу, например, в графическом дизайне для фильмов (анимация облаков и т.д.) Или предсказать действия природы. - Согласно недавнему обзору Just-Eat, не все в Соединенном Королевстве действительно знают, что такое шотландское деликатес, хаггис. Из 1623 британских людей опросили:\n\n * 18% британцев считали, что хаггис был своего рода шотландским животным. \N\n * 15% считали, что это шотландский музыкальный инструмент. \N\n * 4% персонаж из Гарри Поттера. \n\n * 41% даже не знали, что такое национальное блюдо в Шотландии.\n\nКогда небольшое количество шотландцев призналось, что не знает, что такое хаггис, они также обнаружили, что 68% шотландцев как видеть Хаггиса, доставленного как вынос. - С растущими опасениями, связанными с Facebook и постоянно меняющимися настройками конфиденциальности, несколько разработчиков программного обеспечения теперь создали веб-сайт, который позволяет пользователям тратить через обновления статуса всех, у кого нет правильных настроек конфиденциальности, чтобы предотвратить его. \N\nNamed Openbook, конечная цель сайта - еще больше разоблачить проблемы с Facebook и его настройками конфиденциальности для широкой публики и показать людям, насколько легко получить доступ к этому типу информации о совершенно незнакомых людей. Сайт работает как поисковая система, поэтому легко искать такие термины, как "не рассказывать никому" или "я ненавижу своего босса", а поиск также можно сузить по полу. * Домашнее животное дня -Шкотский терьер -Земная акула -Hamster -Tse Tse Fly END
Я использую этот код:
contents = open("data.dat").read()
data = contents.split('*') #split the data at the '*'
newlist = [item.split("-") for item in data if item]
чтобы сделать это неправильным, похожее на то, что я должен получить список
"\n\n" является частью входных данных, поэтому он сохраняется в python. Просто добавьте strip(), чтобы удалить его:
finallist = [item.strip() for item in newlist]
См. раздел() docs: http://docs.python.org/library/stdtypes.html#str.strip
ОБНОВЛЕНО ОТ КОММЕНТАРИЙ:
finallist = [item.replace("\\n", "\n").strip() for item in newlist]
strip()
не будет этого делать! Сначала я тоже запутался, но присмотрелся - в файле есть последовательности '\' и 'n': British people polled:\n\n * 18% of Brits
open ( "data.dat" ). read() - считывает все символы в файле, а не только те, которые вы хотите. Если вам не нужно "\n", вы можете попробовать content.replace( "\n", "") или прочитать строки (не весь контент) и обрезать последний символ "\n" каждой строки.
Следующее решение вашей проблемы я считаю:
result = [ [subitem.replace(r'\n\n', '\n') for subitem in item.split('\n-')]
for item in open('data.txt').read().split('\n*') ]
# now let pretty print the result
for i in result:
print '***', i[0], '***'
for j in i[1:]:
print '\t--', j
print
Примечание. Я разделил на новую строку + *
или -
, таким образом, он не будет разбиваться на тире внутри текста. Также я заменю текстовую последовательность символов \
n
\
n
(r'\n\n'
) новым символом строки '\n'
. И однострочное выражение - это понимание списка, способ построения списков в одном gulp, без нескольких .append()
или +
Это разделит любую звездочку, которая у вас есть в тексте.
Лучшая реализация - сделать что-то вроде:
lines = []
for line in open("data.dat"):
if line.lstrip.startswith("*"):
lines.append([line.strip()]) # append a list with your line
elif line.lstrip.startswith("-"):
lines[-1].append(line.strip())
Для получения дополнительной домашней работы изучите, что происходит при использовании функции open() таким образом.