You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 17:15:54