在 Python 中将单词/数字与符号分开
Posted
技术标签:
【中文标题】在 Python 中将单词/数字与符号分开【英文标题】:Seperate words/numbers from symbols in Python 【发布时间】:2015-04-21 03:49:08 【问题描述】:在python 2中,我想获取一个字符串,并将其存储在一个数组中,分隔符是从单词/数字到符号以及空格的变化,反之亦然。希望有一个功能可以做到这一点。示例:
"54 3 'hello world' 5+4"
会返回
["54", "3", "'hello world'", "5", "+", "4"]
我使用re.findall(r"[\w']+", text)
来获取所有分隔的单词/数字的列表,但在整理符号时我被卡住了。
【问题讨论】:
你有没有尝试过? 没有内置函数来处理这种情况,你需要为你创建一个。你的意思是store
而不是sort
?
我已经使用re.findall(r"[\w']+", Script)
来获取所有分隔的单词/数字的列表,但是在整理符号时我被卡住了。 @Bhargav Rao
@user15888 将其添加到您的问题中
是的,我的意思是存储,现在编辑它。 @Anmol_uppal
【参考方案1】:
您也许可以使用如下解决方法,但您没有指定所有可能的符号。
>>> import re
>>> s = "54 3 'hello world' 5+4"
>>> re.findall(r"('[^']*'|\w+|[^\w\s]+)", s)
['54', '3', "'hello world'", '5', '+', '4']
更严格的做法是:
>>> re.findall(r"('[^']*'|[a-z0-9]+|[^a-z0-9\s]+)", s, re.I)
【讨论】:
【参考方案2】:import re
x="""54 3 'hello world' 5+4"""
print [x for x in re.split(r"[ ](?![^']*'(?:[^']*'[^']*')*[^']*$)|([+*-])",x) if x]
你可以通过re module
试试这个。
【讨论】:
希望我能接受多个答案,干得好! @BhargavRao 直接在我的编译器上执行此操作。别担心它会起作用 :) 我很抱歉哈哈,我几乎没有声誉,投票需要 15 个,当我有 15 个代表时我会重新访问并投票。 你是 vks 吗?或者有其他人入侵了您的帐户!没有 DEMO,你的答案看起来太不完整了!哈哈。无论如何,我的支持:) @BhargavRao 哇!!!!会调查那个模块!!!!!!!!!ply
thanx 很多 :) 你是个巫师 :)【参考方案3】:
您可以使用以下模式进行拆分:
>>> [i for i in re.split(r'(?<![a-zA-Z]) |([\+\-\*\\])',s) if i]
['54', '3', "'hello world'", '5', '+', '4']
(?<![a-zA-Z])
是 negative look behind,根据前面没有任何单词字符的空格进行拆分!
【讨论】:
感谢您的回答,您的工作正常,但我只能接受一个。 :) 在 15 次代表时重新访问 ;) @BhargavRao 我希望!但是10点以后!我想我正在失去代表的倾向! ;) 你实际上可以将你的`+-*`组合在一起 @vks 我怎样才能分组并且仍然将它们放在拆分列表中?以上是关于在 Python 中将单词/数字与符号分开的主要内容,如果未能解决你的问题,请参考以下文章
如何在Python中将具有名称(1个或多个单词)和数字的单行输入字符串拆分为[“名称”,“数字”]?