吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1484|回复: 5
收起左侧

[求助] python如何用正则提取大写的年月日?

[复制链接]
double07 发表于 2021-7-14 23:33
json格式链接:https://sf-item.taobao.com/json/get_notice_attach.htm?project_id=2958865,如何在链接中用正则取最后一行年月日并转为正常年月日 ?

image.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

坏人。丶 发表于 2021-7-14 23:52
最好看html 有没有标签 或者带什么calss的 才好提取出来,提取到了转换就简单了
涛之雨 发表于 2021-7-15 00:36
[Python] 纯文本查看 复制代码
CN_NUM = {'〇' : 0, '一' : 1, '二' : 2, '三' : 3, '四' : 4, '五' : 5, '六' : 6, '七' : 7, '八' : 8, '九' : 9, '零' : 0,'壹' : 1, '贰' : 2, '叁' : 3, '肆' : 4, '伍' : 5, '陆' : 6, '柒' : 7, '捌' : 8, '玖' : 9, '貮' : 2, '两' : 2}


感觉用不到正则表达式,这个在最后直接去掉空行后按字典替换最后一行就行
kk159 发表于 2021-7-15 08:40
Snipaste_2021-07-15_08-39-49.png

[Python] 纯文本查看 复制代码
# *_* coding : UTF-8 *_*
# author  :  Leemamas
# 开发时间  :  2021/7/15  8:30

import requests
from bs4 import BeautifulSoup
import re


def crawl_data(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.64'
    }
    try:
        response = requests.get(url, headers=headers)

        soup = BeautifulSoup(response.text, 'lxml')

        return soup
    except Exception as e:
        print(e)


def change(key):
    number = ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九']
    result = []
    for i in key:
        for j, n in enumerate(number):
            if i == n:
                result.append(j)

    result = ''.join(list(map(str, result)))

    return result


if __name__ == '__main__':
    url = 'https://sf-item.taobao.com/json/get_notice_attach.htm?project_id=2958865'
    html = crawl_data(url)

    all_p = html.find_all('p')

    pattern = r'[\u4e00-\u9fa5〇]{4}年([\u4e00-\u9fa5]{1}|[\u4e00-\u9fa5]{2})月([\u4e00-\u9fa5]{1}|[\u4e00-\u9fa5]{2})日'

    for p in all_p:
        data = p.text
        if re.match(pattern, data):
            year_pos = 4
            month_pos = data.find('月')
            day_pos = data.find('日')
            year = data[:year_pos]
            month = data[year_pos + 1:month_pos]
            day = data[month_pos + 1:day_pos]

            print(data)
            print(change(year), change(month), change(day))

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
Colde + 1 + 1 用心讨论,共获提升!
double07 + 1 + 1 热心回复!

查看全部评分

whisperbb 发表于 2021-7-15 09:20
常规的匹配日期的正则分组里面把数字分组的数字换成对应的大写 类似于 \d变成[〇一二三四五六七八九] 这样
c03xp 发表于 2021-7-15 11:11
我只知道在notepad++里查找汉字的正则表达式是 [一-龥!-~]
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-19 13:17

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表