python---从文件里查找某特定字符串,并统计出现次数

需求背景:

有一个txt文件,里面包含了大量用户及用户的身份证号,用逗号分隔;每用户包含姓名和身份证号两部分,姓名和身份证之间有下划线。

如下这个样子: 姓名1_身份证号1,姓名2_身份证2,姓名3_身份证3,。。。。

但是密密麻麻的,混在一块;
正好此时我在验证一个功能接口,其中用户姓名和身份证号是必填项,且不能重复,我就想从excel中按行获取。但是同事没有现成的excel; 也没有按行排列整齐的txt. 只有这个排列不分行,字段还被拼接在一块的一个用户身份信息文档。

我就考虑把这个文档中的用户名提取出来,用户身份证提取出来。 提取出来后就可以进一步做优化了。

需求描述:

本示例主要实现:从txt文档里查找某特定字符串(用户姓名和用户身份证号),并统计其出现次数(这里表示文档里包含的用户数)。

import re

def readtxt():
    
    # 乘客的姓名和身份证号需要参数化,数据来源于txt
    txt = open(r"D:\pyproject\data\youxiao_user.txt", "r").read()  # .read()函数作用是读取出打开的txt文档的内容
    passenger_num = len(re.findall("_", txt))  # re.findall() 从一堆内容中找到所有符合条件的字符,返回一个list
    print(passenger_num)
    passenger_list = txt.split(",")
    passenger_index = random.randint(0, passenger_num-1)  # 从m~n之间(包括m和n),随机选出一个整数。
    passengers = passenger_list[passenger_index]
    passenger_name_id = passengers.split("_")
    passenger_name = passenger_name_id[0]
    passenger_id = passenger_name_id[1]
    print(passenger_name, passenger_id)

.read() 读取整个文件

.readline() 读取下一行

.readlines() 读取整个文件到一个list中,以供使用,比较方便

Python,你可以使用多种方法来统计一段字符串特定字符串出现次数。最直接的方法是使用字符串的`count()`方法。下面是一个简单的例子: ```python # 假设我们要统计字符串是这段文本 text = "这是一个示例文本,用于演示如何计算特定字符串出现次数。" # 我们要统计特定字符串是"示例" target = "示例" # 使用count()方法计算特定字符串出现次数 count = text.count(target) print(f"字符串'{target}'在文本出现了{count}次。") ``` 这段代码会输出字符串`"示例"`在`text`字符串出现次数。 除了`count()`方法之外,你还可以使用正则表达式模块`re`来完成同样的任务,尤其是在需要进行更复杂的模式匹配时。例如,如果你想统计包含特定子串的单词数量,或者忽略大小写等。 ```python import re # 使用正则表达式统计包含特定子串的单词数量,忽略大小写 text = "这是一个示例文本,用于演示如何计算特定字符串出现次数。示例文本可以有多个示例。" target = "示例" # 使用re.findall方法查找所有匹配的单词,然后计算数量 matches = re.findall(r'\b' + re.escape(target) + r'\b', text, re.IGNORECASE) count = len(matches) print(f"字符串'{target}'在文本出现了{count}次。") ``` 这个例子使用了`re.findall()`方法,它返回所有匹配的子串列表,然后我们可以简单地通过计算列表的长度来得到匹配的次数。`re.IGNORECASE`标志用于忽略大小写。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值