使用不同的分隔符进行标记

时间:2013-12-10 05:50:12

标签: python

说我正在阅读一个具有一定结构但每行不同的文件。例如,' directory.csv'阅读以下内容

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个变量

2 个答案:

答案 0 :(得分:1)

您不需要正则表达式,

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

答案 1 :(得分: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