首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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
V2EX  ›  Python

如何分解字符串

  •  
  •   songdg · 45 天前 · 1254 次点击
    这是一个创建于 45 天前的主题,其中的信息可能已经有所发展或是发生改变。
    像' [生物质能] [新疆振兴] [页岩气] ' 如何分解成列表 ['生物质能', '新疆振兴', '页岩气'] 形式。
    13 回复  |  直到 2019-09-04 17:25:49 +08:00
        1
    ipwx   45 天前 via Android   ♥ 1
    re.findall(r'\[([^\]]+)\]', s)
        2
    qqq8724   45 天前   ♥ 1
    先替换 ][ 为 ','
    替换 [ 为 ['
    再替换 ] 为 ']
        3
    SuperMild   45 天前   ♥ 1
    我试了一下

    ' [生物质能] [新疆振兴] [生物质能] [新疆振兴] [页岩气] [页岩气] '.split('] [')

    结果是 [' [生物质能', '新疆振兴', '生物质能', '新疆振兴', '页岩气', '页岩气] ']

    你再对头尾的项目简单处理一下就行了。这个如果懂正则,用正则做最好,如果不懂正则,用我这个方法的好处是容易理解。
        4
    princelai   45 天前   ♥ 1
    import re
    s = ' [生物质能] [新疆振兴] [页岩气] '
    re.findall("\[(.*?)\]",s)
        5
    skyrem   45 天前
    numpy.flatten
        6
    Dustyposa   45 天前   ♥ 1
    import re
    s = ' [生物质能] [新疆振兴] [页岩气] '
    re.findall("\w+",s)
        7
    dongxiao   45 天前
    s.replace("]", "").replace("[", "").strip().split()
    Out[126]: ['生物质能', '新疆振兴', '页岩气']

    s
    Out[127]: ' [生物质能] [新疆振兴] [页岩气] '
        8
    imdong   45 天前
    ' [生物质能] [新疆振兴] [页岩气] '.trim(' []').split('] [')

    (function (match_string) {
    let result = match_string.match(/\[([^\]]+)\]/g);
    result.forEach(function (item, index) {
    result[index] = /\[([^\]]+)\]/.exec(item)[1]
    });
    return result;
    })(' [生物质能] [新疆振兴] [页岩气] ')
        9
    snoopygao   45 天前   ♥ 1
    ' [生物质能] [新疆振兴] [页岩气] '.lstrip("'[").rstrip("]'").split('][')
        10
    MMMMMMMMMMMMMMMM   44 天前
    [\u4E00-\u9FA5]*
        11
    songdg   44 天前
    @Dustyposa 这个办法好能应付多种情况,但有个问题,如果出现 [工业 4.0]就不能正确分解。
        12
    songdg   44 天前
    @snoopygao 我也是这种思路。
        13
    ydeveloper   44 天前
    可以用正则式判断最近的"["和"]"之间的内容,拆分后然后再字符串,我不太懂 Python 的写法,不过正则的写法如下:
    (?<=\[).*?(?=\])
    不过这种情况不能判断出[123]]这种类型
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2002 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 15:54 · PVG 23:54 · LAX 08:54 · JFK 11:54
    ♥ Do have faith in what you're doing.