Python 使用不同分隔符标记

Python 使用不同分隔符标记,python,Python,比如说,我在读一个文件,它有一定的结构,但每一行都不同。例如,“directory.csv”读取以下内容 November 11, Veterans’s Day November 24, Thanksgiving December 25, Christma 我想用空格分割这些行,然后用逗号,这样我就可以得到月份、日期和假日。我想使用re.split,但我不知道如何设置正则表达式格式。这就是我所拥有的 fp = open('holidays2011.csv', 'r') import re fo

比如说,我在读一个文件,它有一定的结构,但每一行都不同。例如,“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个变量

你不需要正则表达式

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

由于假日名称中的空格字符,在空格上首先拆分是个坏主意。您可以使用正则表达式分组来获取零件,而无需使用re.split(注意零件周围的括号):


csv模块不能处理这个问题吗?@ZachSantiago它只是在分裂一次后停止分裂。我猜w+d+。+在python正则表达式中都有什么意思?@ZachSantiago是的,
\w
是字母字符,
\d
是数字,
是任意字符,
+
表示“一个或多个字符”。您可以在文档中阅读有关
re
模块的更多信息。
>>> 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