如何提取含指定字符串的行并移除该字符串,同时拆分姓名信息?
解决方案
这里有个简洁的调整方案,能完美匹配你的需求,我们来一步步优化你的代码:
首先,你的原代码通过split得到的列表第一个元素是空字符串,是因为前缀T - 在每行的开头,拆分后第一个部分自然为空。我们直接取拆分后的第二个元素(索引为1)就能拿到纯内容;另外处理作者名时,只需要把逗号替换成空格即可。
完整代码
with open('file.txt','r') as f: # 先初始化变量,避免找不到对应行时出现未定义错误 title = "" author = "" for line in f: # 先去除每行首尾的空白、换行符,避免原文件的空行干扰判断 stripped_line = line.strip() if "T - " in stripped_line: # 拆分后直接取第二部分(索引1),跳过空的前缀部分 title = stripped_line.split('T - ')[1] elif "A - " in stripped_line: # 提取作者部分后,把逗号替换成空格 raw_author = stripped_line.split('A - ')[1] author = raw_author.replace(',', ' ') # 输出最终结果 print(title) print(author)
代码说明
- 初始化变量:给
title和author设置初始空字符串,防止文件中缺少对应行时抛出NameError(原代码如果没找到"A - "行,o_a会未定义) - 清理行内容:用
strip()处理每行,去掉多余的换行符和首尾空白,避免原文件中的空行或空格影响匹配 - 提取目标内容:拆分后直接取索引为1的元素,跳过
split产生的空字符串 - 格式化作者名:用
replace(',', ' ')把作者名里的逗号替换成空格,得到你想要的Wood M.A.格式
运行输出
Python and Matplotlib Essentials for Scientists and Engineers Wood M.A.
内容的提问来源于stack exchange,提问作者ahmed redha
相关产品推荐
相关产品推荐

