【问题标题】:Split string on one use of a word and not the other [duplicate]使用一个词而不是另一个词来分割字符串[重复]
【发布时间】:2018-09-08 17:50:32
【问题描述】:

这里是新手,我正在寻找一种有效的方法来使用 split() 在某个单词之后拆分字符串。 我正在使用python中的Csound API开发语音控制过滤器,并说我的输入命令是“将截止设置为440”,我想在“to”这个词之后分割字符串,基本上意味着我可以说不管我喜欢这个命令,它仍然会找到我正在寻找的频率,我希望这是有道理的。 所以目前,我的代码是

string = "set cutoff to 440"
split = string.split("to")
print(split)

我的输出是

['set', 'cu', 'ff', '440']

问题是“截止”中的“到”,我知道我可以通过将截止更改为频率来解决这个问题,但似乎太容易让步了。我怀疑有一种方法可以使用正则表达式来做到这一点,但我很容易出错,任何建议都会非常有帮助,我希望我的帖子遵守所有的指导方针和东西,对 Stack Overflow 来说还是很新的。

【问题讨论】:

  • 为什么不搜索类似“python split string with regular expressions”而不是问这样的问题呢? SO 不能替代健全的研究。
  • 是的,以后我会,道歉,不打算用容易回答的问题或任何东西阻塞!

标签: python string split csound


【解决方案1】:

这样做的简单方法是用空格分隔单词to

string = "set cutoff to 440"
split = string.split(" to ")
print(split)

返回

['set cutoff', '440']

使用正则表达式这样做比简单地拆分由空格包围的单词效率低得多

【讨论】:

  • 技术上不是一个坏主意。可能比正则表达式更有效,即使它不是很健壮。
  • 不敢相信我没有想到这一点,非常感谢!再次为谷歌发布的帖子感到抱歉,我花了很多时间才弄清楚我需要做什么,感谢您的时间!
【解决方案2】:

如果您出于其他原因想使用正则表达式,请按照以下步骤操作:您可以找到所有非空白字符:

import re

string = "set cutoff to 440"
split = re.findall(r'\S+',string)
print(split)

返回

['set', 'cutoff', 'to', '440']

来自jamylak 在这篇文章中:Split string based on a regular expression

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-16
    • 2013-03-14
    • 2019-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多