2013-12-10 3 views
0

скажите им, читайте файл, который имеет определенную структуру, но отличается от каждой строки. например, «directory.csv» считывает следующуюTokenizing с разными разделителями

November 11, Veterans’s Day 
November 24, Thanksgiving 
December 25, Christma 

я хочу разделить строки через пробел, затем запятой, так что я могу иметь месяц, день и праздник. Я хочу использовать re.split, но я не знаю, как настроить формат регулярных выражений. это то, что у меня есть

fp = open('holidays2011.csv', 'r') 
import re 
for item in fp : 
    month, day, holiday = re.split('; |, ', item) 
    print month, day, holiday 

но когда я печатаю его, у меня нет достаточно предметов для распаковки. но почему? им расщепление в пространстве и запятой, которая дает мне 3 вещи, которые я назвал, как 3-х переменных

+0

Не может ли модуль csv справиться с этим? –

ответ

1

Вам не нужно регулярных выражений для этого,

with open("Input.txt") as inFile: 
    for item in inFile: 
     datePart, holiday = item.split(", ", 1) 
     month, day = datePart.split() 
+0

что это 1 сделать? –

+0

@ ZachSantiago Это просто прекращает расщепление после расщепления один раз. – thefourtheye

0

Нарезка первый на пространстве это плохая идея из-за символ пробела в имени праздника. Вы можете использовать группировку регулярных выражений для получения деталей без использования re.split (обратите внимание на скобки вокруг частей):

>>> import re 
>>> s = """November 11, Veterans’s Day 
... November 24, Thanksgiving 
... December 25, Christmas""" 
>>> for line in s.split('\n'): 
...  month, day, holiday = re.match(r'(\w+) (\d+), (.+)', line).groups() 
...  print month 
...  print day 
...  print holiday 
...  print '' 
... 
November 
11 
Veterans’s Day 

November 
24 
Thanksgiving 

December 
25 
Christmas 
+0

im guessing w + d +. + Все означает что-то в регулярных выражениях python? –

+0

@ ZachSantiago yes, '\ w' - это алфавитные символы,' \ d' - это цифры, '.' - любой символ, а '+' означает «один или несколько». Вы можете больше узнать о модуле 're' в документах. –

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