从文件读取数据添加至列表并筛选带(+)标记的派对参会人员的实现方法
嘿,我来帮你搞定这个需求!要实现读取文件内容并筛选出带有(+)标记的参会人员,咱们用Python就能轻松完成,逻辑清晰又好理解,下面是具体的实现方法:
实现步骤与代码示例
核心思路
先把文件里的内容读出来,然后按照「标记+名字」的配对规则拆分内容,最后根据标记把人员分到「参会」和「未参会/不确定」两个列表里。
1. 读取文件内容
咱们用Python的with语句来读取文件,这是最安全的方式——它会自动帮你关闭文件,不用担心忘记关文件导致资源泄漏。假设你的目标文件名叫party_guests.txt,里面的内容就是你给的示例:(+) John (?) Jake (+) Billie。
2. 解析内容并筛选人员
读取到的内容是一整串字符串,咱们先把它按空格拆分成元素列表,然后每两个元素为一组(标记+名字),遍历判断标记类型,把名字分到对应的列表里。
完整代码示例
# 初始化两个列表,分别存放参会和未参会/不确定的人员 attending_guests = [] non_attending_guests = [] # 读取文件内容 with open('party_guests.txt', 'r', encoding='utf-8') as file: file_content = file.read().strip() # strip()去掉内容前后的空白字符 # 将内容按空格拆分成元素列表,得到类似 ['(+)', 'John', '(?)', 'Jake', '(+)', 'Billie'] 的结构 content_elements = file_content.split() # 遍历列表,每两个元素为一组(标记+名字) for index in range(0, len(content_elements), 2): marker = content_elements[index] guest_name = content_elements[index + 1] if marker == '(+)': attending_guests.append(guest_name) else: non_attending_guests.append(guest_name) # 输出结果 print("✅ 确认参会的人员:", attending_guests) print("❌ 未参会/不确定的人员:", non_attending_guests)
代码说明
with open(...):安全读取文件,指定encoding='utf-8'是为了避免中文或特殊字符乱码(如果你的文件里有这类内容的话)。split():默认会把所有空白字符(空格、换行等)作为分隔符,所以即使标记和名字之间有多个空格,也能正确拆分。- 步长为2的循环:
range(0, len(content_elements), 2)让我们每次取第0、2、4...个元素作为标记,对应的下一个元素就是名字,完美匹配你的文件格式。
额外小提示
如果你的文件是每行一个人员信息(比如每行是(+) John),那可以稍微修改代码,按行读取处理:
attending_guests = [] non_attending_guests = [] with open('party_guests.txt', 'r', encoding='utf-8') as file: for line in file: line = line.strip() if not line: continue # 跳过空行 marker, guest_name = line.split(maxsplit=1) # 只按第一个空格拆分,避免名字里有空格的情况 if marker == '(+)': attending_guests.append(guest_name) else: non_attending_guests.append(guest_name)
这个版本还能处理名字里带空格的情况(比如(+) Mary Ann),实用性更强~
内容的提问来源于stack exchange,提问作者hargikana
相关产品推荐
相关产品推荐

