V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
skpoo
V2EX  ›  Python

Python 怎么从格式固定的题库中提取多选题

  •  
  •   skpoo · 2017-06-25 15:57:56 +08:00 · 3655 次点击
    这是一个创建于 2468 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有 500 多条这样的题目,现在想从里面把多选题提取出来,奈何等级不够,完不成这个想法。

     [开始] 多选题(分值=2 分;答案=ABC ;难度=难度题)
    以下关于生成树协议原理的描述正确的是( )
    A、从网络中所有的交换机中,选出一个作为根交换机( Root )
    B、计算本交换机到根交换机的最短路径
    C、对每个 LAN,选出离根交换机最近的那个交换机作为指定交换机,负责此 LAN 上的数据
    转发
    D、非根交换机会选择若干个根端口,这些根端口给出的路径是此交换机到根交换机的最佳
     [结束] 
     [开始] 多选题(分值=2 分;答案=AE ;难度=基础题)
    在 STP 协议中,下面哪些因素会影响根交换机的选举( )
    A、交换机优先级
    B、交换机端口 ID
    C、交换机接口带宽
    D、交换机的 IP 地址
    E、交换机的 MAC 地址
     [结束] 
     [开始] 单选题(分值=2 分;答案=A ;难度=水平题)
    IP 头中的 TTL 字段设置了数据包可以经过的路由器数目。 一旦经过一个路由器,TTL 值
    就会减 1, 当该字段值为( )时,数据包将被丢弃。
    A、0
    B、1
    C、-1
    D、2
     [结束] 
    

    因为单选题的格式固定,只有四个选项,现在只能把单选题提取了出来

    IP 头中的 TTL 字段设置了数据包可以经过的路由器数目。 一旦经过一个路由器,TTL 值
    就会减 1, 当该字段值为 [ 0 ] 时,数据包将被丢弃。
    

    多选题试了好久一直不成功,请教熟悉 Python 的 V 友可否给一个思路,谢谢

    10 条回复    2017-06-26 13:22:11 +08:00
    xiahei
        1
    xiahei  
       2017-06-25 16:06:52 +08:00   ❤️ 1
    mrcn
        2
    mrcn  
       2017-06-25 16:10:52 +08:00 via Android   ❤️ 1
    没用过 Python,提供个思路吧,就是不停的正则。
    先匹配符合“ [开始] 多选题* [结束] ”这样的,就可以分离多选与单选了
    然后获取答案,每题都匹配“答案=*;”这样的,就能获取每题的答案
    剩下的就好做了……
    skpoo
        3
    skpoo  
    OP
       2017-06-25 16:12:09 +08:00
    @xiahei #1 哈!你哈,请问这个是什么软件啊?看着比自带的 IDLE 高级好多。还有就是有没有办法将答案也加进题目中去呢?
    就像这样
    在 STP 协议中,下面哪些因素会影响根交换机的选举 [交换机优先级],[交换机的 MAC 地址]
    谢谢!
    GoBeyond
        4
    GoBeyond  
       2017-06-25 16:12:26 +08:00 via Android   ❤️ 1
    合理安排你的正则匹配顺序,如果你能写出 nb 的能一步到位的正则就更好了
    skpoo
        5
    skpoo  
    OP
       2017-06-25 16:15:03 +08:00
    @mrcn #2 单选题的话我是将一个完整的题目和答案提取出来,然后慢慢匹配。到多选题的时候有的题目会有 5 个选项,这样就不会了
    skpoo
        6
    skpoo  
    OP
       2017-06-25 16:18:13 +08:00
    @GoBeyond #4 正则不太熟,我用 split() 和 count() 慢慢匹配的,看来要去学正则表达式了
    flaneurse
        7
    flaneurse  
       2017-06-25 16:19:31 +08:00 via Android   ❤️ 1
    @skpoo 那是 ipython
    bxb100
        8
    bxb100  
       2017-06-26 08:27:27 +08:00 via Android
    @flaneurse 会不会是 spyder ? ipy 颜色好像没这么鲜艳吧
    xiahei
        9
    xiahei  
       2017-06-26 10:00:37 +08:00
    @bxb100
    @skpoo
    是 IPython,只不过终端配色用的 Ura。https://github.com/Mayccoll/Gogh/blob/master/content/themes.md#ura
    jeffersonpig
        10
    jeffersonpig  
       2017-06-26 13:22:11 +08:00
    @bxb100 spyder 用的不就是 IPython 吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5469 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 08:52 · PVG 16:52 · LAX 01:52 · JFK 04:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.