python:如何使用正则表达式创建此代码?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python:如何使用正则表达式创建此代码?相关的知识,希望对你有一定的参考价值。

如果我输入"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查找ymd以及join之前的所有两位数字以加入所有必需的格式。

另一答案
birthday = input("birthday").split()
a = ''.join([''.join([i for i in c if i.isdigit()][-2:]) for c in birthday])

这适用于任何库

以上是关于python:如何使用正则表达式创建此代码?的主要内容,如果未能解决你的问题,请参考以下文章

15Java常用类(数组工具类Arrays)基本类型包装类(Integer类)正则表达式String的split(String regex)和replaceAll(String regex, (代码片

Python从零开始写爬虫-2 使用正则表达式解析HTML

常用正则表达式最强汇总(含Python代码举例讲解+爬虫实战)

Python:使用正则表达式爬虫如何处理HTML代码中的换行?

Python:使用正则表达式爬虫如何处理HTML代码中的换行?

融职教育Web前端学习 第3章 JavaScript基础教程10 正则表达式