繁体   English   中英

从包括减号python的字符串中提取数字

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM