python:如何使用正则表达式编写此代码?

时间:2018-09-15 17:52:14

标签: python regex date

如果输入(?:\G|(?=\d+_.{16}E.*CON))(\d+)_(.*?)(EXE_CO|EXE_IN|CONTENT_ACCESS),那么我想制作一个打印"1995y 05m 05d"的程序。更多示例:"950505"-> "1949y 05m 23d"

"490523"

这是我的代码。我如何解决它?有解决方案吗?

5 个答案:

答案 0 :(得分:1)

由于您基本上是在使用日期字符串,因此可以使用datetime.strptime()来解析它们:

>>> from datetime import datetime
>>> birthday = '1995y 05m 05d'
>>> datetime.strptime(birthday, '%Yy %mm %dd').strftime('%y%m%d')
'950505'

答案 1 :(得分:0)

您现有的代码将打印整年,而您只需要两位数字。只需跳过打印的前两位数字即可。

print(p[2:])

这将从位置2开始打印p(第三个字符,因为列表从0开始计数),没有结束范围,所以它将打印除前两个字符之外的整个字符串({{1 }})。

答案 2 :(得分:0)

使用正则表达式:

>>> import re
>>> a = re.findall("\d+","1995y 05m 05d")
>>> a[0] = a[0][2:]
>>> output = ""
>>> for item in a:
    output += item

>>> int(output)
950505
>>> 

答案 3 :(得分:0)

请求的正则表达式解决方案:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    UITabBar.appearance().unselectedItemTintColor = UIColor(displayP3Red: 0, green: 0, blue: 0, alpha: 1)

    return true
}

使用import re s = '1995y 05m 05d' print(''.join(re.findall(r'\d{2}(?=[ymd])', s))) # 950505 查找findallymd之前的所有两位数字。

答案 4 :(得分:0)

        XmlDocument doc = new XmlDocument();
        doc.Load("controls.xml");

        XmlNodeList nodes = doc.SelectNodes("/Labels/label1/Internal/Text");
        foreach (XmlNode node in nodes)
        {
            XmlAttribute DateAttribute = node.Attributes["Text"];
            node.InnerText = TextBox1.Text;
        }
        doc.Save("controls.xml");

这不需要任何库