如何匹配以逗号分隔的可变项目列表

问题描述 投票:0回答:3

我想把东西变成这样

CS 240, CS 246, ECE 222, ... (more or less); Software Engineering students only

进入

('CS 240', 'CS 246', 'ECE 222', 'ECE 220')

在 Python 中,匹配单个课程的代码如下所示

>>> re.search('([A-Z]{2,5} \d{3})', 'SE 112').groups()
('SE 112',)

我更喜欢仅使用正则表达式的方法,因为我有一堆其他使用“|”的备用正则表达式将它们结合起来。但是,使用 split 的方法也是可以接受的。

python regex string-matching
3个回答
5
投票
>>> a="CS 240, CS 246, ECE 222"
>>> b=tuple(a.strip() for a in a.split(','))
>>> b
('CS 240', 'CS 246', 'ECE 222')
>>> 

3
投票

这不是您正在寻找的

csv
标准库模块(http://docs.python.org/library/csv.html)吗?


0
投票

此方法使用正则表达式并匹配您的输入:

>>> import re
>>> re.findall("\w+\s\d+", "CS 240, CS 246, ECE 222")
['CS 240', 'CS 246', 'ECE 222']

它不查找逗号。相反,它会查找除逗号之外的任何内容:它首先匹配多个单词字符,然后匹配空格字符,然后匹配多个数字。 Findall 查找此模式的所有出现位置。

© www.soinside.com 2019 - 2024. All rights reserved.