我有一个字符串列表,如:
input_list = ['1。公司','2.A。工作报告','3.1A。 info','4杰克和吉尔','4.1利润','11亏损','5。 2014年作品','A。考虑]
我希望只搜索列表项的起点,以便我得到以下输出:
1
2.A
3.1A
4
4.1
11个
5
一个
我尝试了以下代码:
input_list =['1 . company','2.A . work report','3.1A . info','4 Jack and Jill','4.1 profit','11 loss','5 . 2014 works','A . considerations']
for item in input_list:
num_search = re.search(r'^\w+(\W)?(\w+)?\s',item)
num = num_search.group()
print num
代码输出如下:
1
2.A
3.1A
4杰克
4.1
11个
5
一个
上述输出中的问题是 4 Jack 。我只想 4 。
我认为我必须为此目的使用不同的正则表达式。
如何才能使广义正则表达式仅匹配所有点?
答案 0 :(得分:2)
详细说明@MatsLindh指出的内容,split按空格并获取第一项:
>>> for item in input_list:
... print(item.split(" ", 1)[0])
...
1
2.A
3.1A
4
4.1
11
5
A
答案 1 :(得分:1)
如果你想用正则表达式做,你可以在(嵌套)列表理解中使用它们:
[m.group(0) for m in filter(None, [re.match(r'^([\d.A-Z]+)', i) for i in input_list])]
结果:
['1', '2.A', '3.1A', '4', '4.1', '11', '5', 'A']
答案 2 :(得分:0)
正确的正则表达式可能是
import re
input_list =['1 . company','2.A . work report','3.1A . info','4 Jack and Jill','4.1 profit','11 loss','5 . 2014 works','A . considerations']
for item in input_list:
num_search = re.search(r'^(\S+)',item)
if num_search:
num = num_search.group()
print num