[英]extract digit from a string including minus sign python
我在具有/Date(-31431600000)/
的列表中有多个字符串
我正在尝试提取包括减号在内的数字并将其变回日期。 该字符串表示Linux EPOCH日期
我试过了:
import datetime as dt
date_list = ["/Date(-31431600000)/", "/Date(-31431600000)/"]
[dt.datetime.fromtimestamp(int(filter(lambda x: x.isdigit(), y)) / 1000) for y in date_list]`
但它错过了减号。
谢谢!
尝试使用以下正则表达式 :
(?<=Date\()-\d+(?=\))
参见正则表达式演示
python ( 演示 )
import re
regex = r"(?<=Date\()-\d+(?=\))"
str = "/Date(-31431600000)/"
matches = re.finditer(regex, str)
for matchNum, match in enumerate(matches):
matchNum = matchNum + 1
print ("{match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group())) # -31431600000
我认为这里最安全的正则表达式是:
(?:/Date\()(-?\d+)(?:\)/)
从这里开始,您还要检查它是否以/Date(
)/
开头,并以/Date(
结束,并且前面仅带有一个可选的减号。 然后,您可以通过以下方式获取日期:
>>> import re
>>> rgx=re.compile(r'(?:/Date\()(-?\d+)(?:\)/)')
>>> rgx.match("/Date(-31431600000)/").group(1)
'-31431600000'
因此,可以使用int(..)
将其转换为int
的字符串:
>>> int(rgx.match("/Date(-31431600000)/").group(1))
-31431600000
r'[^-0-9]'
删除除-
和0-9
数字之外的所有字符。
[re.sub(r'[^-0-9]','',x) for x in date_list]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.