Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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_String - Fatal编程技术网

解析';时间字符串';用Python?

解析';时间字符串';用Python?,python,string,Python,String,我正在编写一个应用程序,其中包括让用户以以下格式输入时间: 1m30s # 1 Minute, 30 Seconds 3m15s # 3 Minutes, 15 Seconds 2m25s # 2 Minutes, 25 Seconds 2m # 2 Minutes 55s # 55 Seconds 数据可以有一个“分钟标志”,一个“第二个标志”,或两者兼有。将这些字符串解析为类似以下格式的正确方法是什么: { "minutes" : 3 "seconds"

我正在编写一个应用程序,其中包括让用户以以下格式输入时间:

1m30s # 1 Minute,  30 Seconds

3m15s # 3 Minutes, 15 Seconds

2m25s # 2 Minutes, 25 Seconds

2m    # 2 Minutes

55s   # 55 Seconds
数据可以有一个“分钟标志”,一个“第二个标志”,或两者兼有。将这些字符串解析为类似以下格式的正确方法是什么:

{
    "minutes" : 3
    "seconds" : 25
}
雷格克斯来营救

>>> import re
>>> minsec = re.compile(r'(?P<minutes>\d+)m(?P<seconds>\d+)s')
>>> result = minsec.match('1m30s')        
>>> result.groupdict()
{'seconds': '30', 'minutes': '1'}

美好的我也在做类似的回应,但你的更好。我从来都不知道比赛小组的名字是这样的。
import re
pattern = r'(?:(?P<minutes>\d+)m)?(?:(?P<seconds>\d+)s)?'

minsec = re.compile(pattern)

def parse(s, pat=minsec):
    return pat.match(s).groupdict()

tests = ['1m30s', '30s', '10m29s']
for t in tests:
    print '---'
    print ' in:', t
    print 'out:', parse(t)
---
 in: 1m30s
out: {'seconds': '30', 'minutes': '1'}
---
 in: 30s
out: {'seconds': '30', 'minutes': None}
---
 in: 10m29s
out: {'seconds': '29', 'minutes': '10'}
import re

tests=['1m30s','3m15s','2m25s','2m','55s']
for time_str in tests:
    match=re.match('(?:(\d*)m)?(?:(\d*)s)?',time_str)
    if match:
        minutes = int(match.group(1) or 0)
        seconds = int(match.group(2) or 0)
        print({'minutes':minutes,
               'seconds':seconds})

# {'seconds': 30, 'minutes': 1}
# {'seconds': 15, 'minutes': 3}
# {'seconds': 25, 'minutes': 2}
# {'seconds': 0, 'minutes': 2}
# {'seconds': 55, 'minutes': 0}