如果我输入"1995y 05m 05d"
,那么我想制作一个打印"950505"
的程序。更多例子:"1949y 05m 23d"
- > "490523"
。
import re
Birthday = str(input("insert your birth<(ex) xxxxy **m 00d> : "))
p= re.sub('[ymd ]','',Birthday)
print(p) #result is "xxxx**00"
这是我的代码。我如何解决它?任何解决方案
由于您基本上使用的是日期字符串,因此可以使用datetime.strptime()
来解析它们:
>>> from datetime import datetime
>>> birthday = '1995y 05m 05d'
>>> datetime.strptime(birthday, '%Yy %mm %dd').strftime('%y%m%d')
'950505'
您现有的代码打印全年,您只需要两位数。只需跳过打印的前两位数字即可。
print(p[2:])
这将从位置2开始打印p
(第三个字符,因为列表从0开始计算),没有结束范围,所以它打印除了前两个字符(样本中的19
)之外的整个字符串。
使用Regex表达式:
>>> import re
>>> a = re.findall("\d+","1995y 05m 05d")
>>> a[0] = a[0][2:]
>>> output = ""
>>> for item in a:
output += item
>>> int(output)
950505
>>>
请求的正则表达式解决方案:
import re
s = '1995y 05m 05d'
print(''.join(re.findall(r'\d{2}(?=[ymd])', s)))
# 950505
使用findall
查找y
,m
和d
以及join
之前的所有两位数字以加入所有必需的格式。
birthday = input("birthday").split()
a = ''.join([''.join([i for i in c if i.isdigit()][-2:]) for c in birthday])
这适用于任何库