当前位置: 首页 > 面试题库 >

将字符串拆分为单词和标点符号

龚安民
2023-03-14
问题内容

我正在尝试将字符串拆分为单词和标点符号,并将标点符号添加到拆分生成的列表中。

例如:

>>> c = "help, me"
>>> print c.split()
['help,', 'me']

我真正希望列表看起来像是:

['help', ',', 'me']

因此,我希望将字符串在空白处拆分,并将标点符号与单词分开。

我尝试先解析字符串,然后运行拆分:

>>> for character in c:
...     if character in ".,;!?":
...             outputCharacter = " %s" % character
...     else:
...             outputCharacter = character
...     separatedPunctuation += outputCharacter
>>> print separatedPunctuation
help , me
>>> print separatedPunctuation.split()
['help', ',', 'me']

这会产生我想要的结果,但是对于大文件却很慢。

有没有办法更有效地做到这一点?


问题答案:

这或多或少是做到这一点的方法:

>>> import re
>>> re.findall(r"[\w']+|[.,!?;]", "Hello, I'm a string!")
['Hello', ',', "I'm", 'a', 'string', '!']

诀窍是,不要考虑在哪里分割字符串,而是要考虑在令牌中包含什么。

注意事项:

  • 下划线(_)被认为是内部单词字符。如果不需要,请替换\ w。
  • 这不适用于字符串中的(单引号)。
  • 将要使用的所有其他标点符号放在正则表达式的右半部分。
  • 回复中未明确提及的所有内容均被静默删除。


 类似资料:
  • 我有一个字符串。我需要找到外部标点符号并将它们从附加的单词中拆分出来,并将它们视为另一个单词。输出将是: 将是一个单词(内部标点符号) 小狗 将是两个单词, 我的代码根据外部标点符号拆分单词,但我希望它们作为单独的单词。 我该怎么做?

  • 问题内容: 我想做的是一项相当普通的任务,但我在网络上找不到任何参考。我的文字带有标点符号,我想要一个单词列表。 应该 但是只能使用一个参数,因此在用空格分割后,所有单词都带有标点符号。有任何想法吗? 问题答案: 正则表达式合理的情况:

  • 问题内容: 我正在尝试找到一种将String拆分为String数组的方法,并且每当遇到白色香料时就需要对其进行拆分,例如 “嗨,我是保罗” 进入” “嗨”“我”“保罗” 如何使用RegularExpression在split()方法中表示空格? 问题答案: 您需要一个正则表达式,例如,这意味着: 每当遇到至少一个空格时就进行拆分 。完整的Java代码是:

  • 问题内容: 如何将以下单词拆分为数组 进入 我尝试过这样的事情 但是输出是 问题答案: 要在空格和撇号上进行特殊分割: 或分割成任何非文字字符:

  • 问题内容: 这是该问题的后续措施。 问题在下面的第二行。 问题答案: 具体根据 源,其使用,

  • 问题内容: 将字符串拆分为流的 最佳 方法是什么? 我看到了这些变化: 我的优先事项是: 坚固性 可读性 性能 一个完整的可编译示例: 问题答案: / 由于返回数组,因此我始终建议您使用流式处理数组的规范用法。 / 是一个 varargs 方法,它恰好接受一个数组,这是由于varargs方法是通过数组实现的,并且在将varargs引入Java以及改型为接受可变参数的现有方法时,存在兼容性方面的问题

  • 问题内容: 我需要将一个String拆分为单个字符String的数组。 例如,拆分“ cat”将得到数组“ c”,“ a”,“ t” 问题答案: 这将产生

  • 问题内容: 有没有办法在不知道字符串长度的情况下,将一个字符长的字符串切成4个字符串,每个字符长? 例如: 问题答案: