Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式-在第一个逗号之前获取所有内容-python_Python_Regex_Python 2.7 - Fatal编程技术网

正则表达式-在第一个逗号之前获取所有内容-python

正则表达式-在第一个逗号之前获取所有内容-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

我有我的输入数据utf8编码

我正在对输入应用正则表达式以查找逗号之前的所有内容。
然而,我的正则表达式返回
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。这就是问题所在。