从字符串中提取所有数字及其符号-Python 2.7
如何提取所有数字和符号 字符串可以是这样的从字符串中提取所有数字及其符号-Python 2.7,python,regex,python-2.7,Python,Regex,Python 2.7,如何提取所有数字和符号 字符串可以是这样的 -1+110,+20-123和+23-432-543 我正在使用这个简单的正则表达式 event_book_value = re.findall('\d+', event_book_value) 它返回数字,但不随符号一起返回。在数字正则表达式前面添加可选符号: [+-]?\d+ [+-]-匹配单个+或- ?-使上一次匹配一次或零次 \d+-一个或多个数字 在数字regex前面添加可选标志: [+-]?\d+ [+-]-匹配单个+或- ?-
-1+110
,+20-123
和+23-432-543
我正在使用这个简单的正则表达式
event_book_value = re.findall('\d+', event_book_value)
它返回数字,但不随符号一起返回。在数字正则表达式前面添加可选符号:
[+-]?\d+
-匹配单个[+-]
或+
-
-使上一次匹配一次或零次?
-一个或多个数字\d+
在数字regex前面添加可选标志:
[+-]?\d+
-匹配单个[+-]
或+
-
-使上一次匹配一次或零次?
-一个或多个数字\d+
def signSplit(string):
nums = []
cur = ""
signs = "+-"
for c in string:
if c in signs:
if cur:#if there is a number (so not the very beginning) then add it to nums
nums.append(cur)
cur = c #start out with the cur storing the sign
elif c.isdigit():
cur+=c
else:
raise ValueError("unrecognised character: %r"%c)
nums.append(cur)
return nums
print(signSplit("+23-432-543"))
对于您的需要,它可能太慢了,但它在纯python中工作,因此以后很容易进行编辑。类似于以下内容:
def signSplit(string):
nums = []
cur = ""
signs = "+-"
for c in string:
if c in signs:
if cur:#if there is a number (so not the very beginning) then add it to nums
nums.append(cur)
cur = c #start out with the cur storing the sign
elif c.isdigit():
cur+=c
else:
raise ValueError("unrecognised character: %r"%c)
nums.append(cur)
return nums
print(signSplit("+23-432-543"))
对于您的需要,它可能太慢了,但它在纯python中工作,因此以后很容易进行编辑。谢谢。它起作用了。你能展示更多的
的例子吗?
签名。。。它是如何工作的。。。有点困惑that@Umair,我放置了?
,这样,如果有没有符号的数字,您仍然可以匹配。它基本上使前面的事情成为可选的。换句话说-xy?z
将匹配xyz
或xz
。谢谢。它起作用了。你能展示更多的的例子吗?
签名。。。它是如何工作的。。。有点困惑that@Umair,我放置了?
,这样,如果有没有符号的数字,您仍然可以匹配。它基本上使前面的事情成为可选的。换句话说-xy?z
将匹配xyz
或xz
。感谢您的努力,但这是一个非常冗长且缓慢的解决方案:(就我个人而言,我经常需要处理少量数据,这些数据从来不会遵循相同的规则两次,因此多功能和冗长的代码正是我的拿手好戏,很高兴您得到了您想要的答案,并很高兴提供了一个替代方案。:)感谢您的努力,但这是一个非常冗长而缓慢的解决方案:(就我个人而言,我经常需要处理少量数据,这些数据从来不会遵循相同的规则两次,因此多功能和冗长的代码正是我的拿手好戏,很高兴您得到了您想要的答案,并很高兴提供了另一种选择。)