正则表达式-在第一个逗号之前获取所有内容-python
我有我的输入数据utf8编码 我正在对输入应用正则表达式以查找逗号之前的所有内容。正则表达式-在第一个逗号之前获取所有内容-python,python,regex,python-2.7,Python,Regex,Python 2.7,我有我的输入数据utf8编码 我正在对输入应用正则表达式以查找逗号之前的所有内容。 然而,我的正则表达式返回None,尽管我可以直观地看到逗号 怎么了? 我在MyString中测试了,',效果很好 这是我的输入数据: ID MyString 765427 Units G2 and G3, kings Drive 207162 Unit 5/165,Elizabeth Palace 47568 Unit 766 - 767 Gate 7
然而,我的正则表达式返回
None
,尽管我可以直观地看到逗号
怎么了?我在
MyString
中测试了,'
,效果很好
这是我的输入数据:
ID MyString
765427 Units G2 and G3, kings Drive
207162 Unit 5/165,Elizabeth Palace
47568 Unit 766 - 767 Gate 7,Jacks Way,
15498 Unit F, Himalayas Street,
根据我的正则表达式-re.search(r.“*?,”s['MyString'])
,我希望我的产出是:
ID MyString
765427 Units G2 and G3,
207162 Unit 5/165,
47568 Unit 766 - 767 Gate 7,
15498 Unit F,
但我得到的是:
ID MyString
765427 Units G2 and G3,
207162 None
47568 Unit 766 - 767 Gate 7,
15498 None
如果我对正则表达式的理解正确,请更正。不然怎么了。我不知道这有什么问题。如上所述,实现这一点的更简单方法是使用split()
函数:
my_string = 'Unit 5/165,Elizabeth Palace'
ans = my_string.split(',', 1)[0] # maxsplit = 1;
print ans
结果:第5单元/165
您甚至可以不使用maxslit=1
参数,在这种情况下:
ans = my_string.split(',')[0]
另外,请注意,虽然从技术上讲这不是一个错误,但最好的做法是为类保留变量名的首字母大写。请参阅和变量命名约定
正则表达式解决方案:我注意到,在您的示例结果中,当逗号后面有空格(在要分析的字符串中)时,您得到了预期的结果。
但是,当逗号后面没有空格时,正则表达式返回“None” 尝试使用正则表达式模式
(*?,)
,而不是*?,
这里有两个用于调试和测试正则表达式的在线工具:(有一个选项可以为您生成代码,尽管它可能比需要的更详细)从标题中,您是否希望只在第一个逗号上拆分字符串?如果这就是您所要做的,那么您只需获取字符串并调用“,”的字符串,但将
split
的第二个参数作为“maxslit”提供,它只会将字符串拆分那么多次。因此->s.split(',',maxslit=1)
,然后您将得到一个列表,您只需要获取列表中的第一个元素。最后,回答,但您希望传递逗号而不是空格谢谢您的帮助Yes。这就是问题所在。