首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在python中解析科学出版物页面范围

在python中解析科学出版物页面范围
EN

Stack Overflow用户
提问于 2016-06-08 01:51:51
回答 1查看 53关注 0票数 0

我需要解析一组包含页面范围的字符串,因为它们出现在科学和其他出版物的元数据中。我没有完整的分页格式规范,我甚至不确定是否存在分页格式,但我需要处理的字符串示例如下:

代码语言:javascript
运行
复制
6-10, 19-22
xlvii-xlviii
111S-2S
326
A078-132
XC-CIII

理想情况下,我希望返回每个字符串的页数,例如6-10, 19-229。如果这太难了,至少是一页或更多。后者实际上非常简单,因为到目前为止,我所见过的示例中似乎只有逗号和破折号作为分隔符。但我确实非常喜欢得到正确的计数。

我可以写我自己的解析器,但我很好奇是否有任何现有的包已经可以做到这一点,开箱即用或使用最少的mods。

EN

回答 1

Stack Overflow用户

发布于 2016-11-02 15:12:00

这里有一个支持解析“正常”数字和罗马数字的解决方案。要解析罗马数字,请安装罗马包(easy_install罗马)。您可以增强parse_num函数以支持其他格式。

代码语言:javascript
运行
复制
import roman

def parse_num(p):
    p = p.strip()
    try:
        return roman.fromRoman(p.upper())
    except:
        return int(p)

def parse_pages(s):
    count = 0
    for part in s.split(','):
        rng = part.split('-', 1)
        a, b = parse_num(rng[0]), parse_num(rng[-1])
        count += b - a + 1
    return count

>>> parse_pages('17')
1
>>> parse_pages('6-10, 19-22')
9
>>> parse_pages('xlvii-xlviii')
2
>>> parse_pages('XC-CIII')
14
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37686086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档