2013-11-27 5 views
0

я следующие строки Im чтение из файлаРасщепление с различными разделителями

# subject, catagory, note 
literature,general education,,note: see approved list 
social-cultural elective,general education,,note: see approved 

я хочу, чтобы разделить их, чтобы добавить к словарю позже. Поэтому я хочу разделить на запятую, двойную запятую и куттер «:». как я буду в состоянии сделать это так, что конечный результат выглядит как

{'Literature' : [['general education'],[ 'see approved list']] 'social-cultural elective' : [['general education'],[see approved]]} 

им с помощью повторного раскола и имели «W +» выражение, но не работали becuase каждый линии имели различные пробелы и другие символы, такие как " -», помощь

+0

Вам действительно нужно быть точным в описании того, что вы хотите. В вашем примере, я вижу, что вы также изменили «-» в «социально-культурном» на пустой и удалили «примечание:» полностью дважды. Запишите * точно *, что вы хотите - не оставляйте ничего. В противном случае люди догадываются, вы говорите «нет» и т. Д. И т. Д. И т. Д. - это становится очень утомительным ;-) –

+0

да я случайно не заметил тире. и примечание не нужно удалять, я просто предположил, что если вы разделитесь на «:» все, что было раньше, так что только текст после этого символа имеет значение –

+0

«если вы разделитесь на»: «все, что было потеряно, так что только текст после этого символа имеет значение »-> Почему же персонажи до запятой (т.е. литература, общее образование и т. д.) также не удаляются? – justhalf

ответ

1

Попробуйте это:

import re 
splitter = re.compile(r":|,,?") 
for line in ("literature,general education,,note: see approved list", 
      "social-cultural elective,general education,,note: see approved"): 
    print splitter.split(line) 

Это печатает:

['literature', 'general education', 'note', ' see approved list'] 
['social-cultural elective', 'general education', 'note', ' see approved'] 

Если это не совсем то, что вы хотите, изменить ваш вопрос, потому что это именно то, что вы просили ;-) (т.е. «Поэтому я хочу разбить запятую, двойную запятую и символ«: »).

+0

это именно то, что я искал. –

+0

Woo hoo! Иногда нам повезло ;-) –

1

Использование Python встроенный split функции:

>>> a_str='social-cultural elective,general education,,note: see approved ' 
>>> import re 
>>> re.split(': |, |\*|\n', a_str) 

PS: Для двух запятых можно сделать str.replace первый

+0

Является ли 're.split()' встроенным, поскольку вам нужно его импортировать? – joshreesjones

+0

Да, я не понимаю, как это было бы сделано с помощью двойной запятой –

+1

@ mathguy54, да - Python поставляется с большой коллекцией модулей, и все они считаются «встроенными». Зачем? Потому что каждый Python приходит с ними ;-) –

Смежные вопросы