python字符串数据处理的一些笔记(连续字符、数字字母间隔等)

本文记录了Python中处理字符串的一些方法,包括使用正则表达式判断IP地址和域名、计算连续字符个数、查找字母间数字以及统计特定字符出现次数。同时讨论了数据库中float类型存储问题,建议使用decimal类型以保证精度。
摘要由CSDN通过智能技术生成

目录

一、字符串处理

二、正则表达式函数说明

三、数据库遇到float数据类型存储的问题

四、参考帖子


一、字符串处理

1、判断字符串是否全部为数字:isdigit()


2、正则表达式判断字符串是否为ip地址:

pattern = r'^((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))$'

result = re.match(pattern, domain)


3、正则表达式判断字符串是否为域名:

pattern = r'^(?=^.{3,255}$)[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$'

result = re.match(pattern, domain)

DNS规定,域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符,也不区分大小写字母。标号中除连字符(-)外不能使用其他的标点符号。级别最低的域名写在最左边,而级别最高的域名写在最右边。由多个标号组成的完整域名总共不超过255个字符。


4、获取连续字符个数

使用正则表达式将字符串进行分片,分片依据为是否是连续字符,然后再对分片的长度进行统计。

    #第一种解法
    sep = '|'

    separated_s = re.sub(r'(.)\1*', lambda m: m.group(0)+sep, str1)#lambda作为一个表达式,定义了一个匿名函数,代码m为入口参数,m.group(0)+sep为函数体,即返回值。在这里lambda简化了函数定义的书写形式。

    for node in separated_s.split(sep)[:-1]:

        len_node = len(node)
        if len_node>1:
            count+=len_node

#第二种解法

    it = re.finditer(r'(.)\1*', str1)
    for node in it:
        len_node = len(node.group())#注意这里的.group()
        if len_node>1:
            count+=len_node


5、计算连续辅音字母个数

使用正则表达式将字符串进行分片,分片依据为是否是连续辅音字符,然后再对分片的长度进行统计。

    it = re.finditer(r'([bcdfghjklmnpqrstvwxyz])*', str1)

    for node in it:
        #print node.group()
        len_node = len(node.group())
        if len_node>1:
            count+=len_node

6、是否存在字母间数字

使用正则表达式进行匹配

result = re.search(r'[a-z][0-9][a-z]', str1)


7、字符串包含特定字符的个数

pattern = re.compile(r'-')
result = pattern.findall(str1)
return len(result)


二、正则表达式函数说明


re.match函数

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

函数语法

re.match(pattern, string,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值