如何用Python提取可变格式作业名称,去除无关子串?
提取作业名称的Python实现方案
你的输入每行都是「作业名称 + " - " + 后续无关内容」的固定格式,不用find()的话,有几个简单易懂的方法适合新手:
方法一:用split()分割字符串
用split(" - ")把每行按" - "拆成两部分,取第一部分就是作业名称,再用strip()清掉名称前后多余的空格(比如第三行里History Essay后面的冗余空格):
# 模拟输入的作业列表 homework_lines = [ "Unit 1 presentation - Due in 2 days - 40 minutes spent", "English Unit 2 Test - Due in 3 days - 1 hour spent", "History Essay - Due in 7 days - 10 minutes spent" ] # 遍历每行提取作业名称 for line in homework_lines: # 按" - "分割后取第一个元素,再清理空格 homework_name = line.split(" - ")[0].strip() print(homework_name)
运行结果:
Unit 1 presentation English Unit 2 Test History Essay
方法二:用rsplit()从右往左分割(更稳妥)
如果作业名称里不小心出现了" - "(虽然你的示例里没有),可以用rsplit(" - ", 1)只从右边分割一次,确保只去掉最后一个" - "后面的内容,避免误分割作业名称:
for line in homework_lines: # 从右往左仅分割1次,取第一部分 homework_name = line.rsplit(" - ", 1)[0].strip() print(homework_name)
这个方法容错性更强,适合复杂一点的场景。
方法三:用partition()分割
partition()会把字符串拆成「分隔符前的内容、分隔符本身、分隔符后的内容」三个部分,直接取第一部分就行:
for line in homework_lines: homework_name = line.partition(" - ")[0].strip() print(homework_name)
这几种方法都不用find(),代码逻辑简单,容易上手。
内容的提问来源于stack exchange,提问作者Anthony
相关产品推荐
相关产品推荐

