【问题标题】:splitting words in string based on '\n'基于 '\n' 拆分字符串中的单词
【发布时间】:2016-10-26 17:16:19
【问题描述】:

伙计们,我有一个字符串,我正在尝试制作一个 ngram,但是当我这样做时遇到了问题ngram = ngrams(raw_text.split(" "), n=1 输出是

[('come',), ('here,',), ('girl\noh,',), ('you',)....]

问题是在我的字符串中,单词的排列方式如下:

come here, girl\noh, you want...

这意味着我的 ngram 比它需要的大得多 那么我该怎么做才能得到像

这样的字符串
come here , girl \n oh , you ... 

所以我的 ngram 是一个更小的订单 多谢你们 我希望你们都有一个美好的一天

编辑我现在知道我使用了分隔符并更改了它...所以 \n 问题消失了,但是我可以将单词拆分为包含标点符号的字符串吗?

【问题讨论】:

  • 您明确选择仅在 ' ' 上拆分。请改用raw_text.split()
  • 什么是raw_text?它来自文件吗?
  • 感谢人,这是一个改进,但我想如果我可以将字符串中包含标点符号的单词拆分,我可能会将 ngram 切成两半
  • 是的,但它只是 txt 文件中的行
  • 您到底在寻找什么?你能提供一个明确的输入/期望的输出示例吗?

标签: python string split


【解决方案1】:

我可以拆分字符串中包含标点符号的单词吗?

您的最终结果仍不清楚:您是要包含标点符号还是完全放弃它?假设您不需要标点符号,使用re.split() 是微不足道的:

>>> import re
>>> re.split(r'\W+', "Hello, this'll split by\n \nwhitespace and also puncutation!")
['Hello', 'this', 'll', 'split', 'by', 'whitespace', 'and', 'also', 'puncutation', '']

如果您想以更智能的方式进行拆分,这很快就会变得复杂。我推荐使用nltk 工具包,它提供了nltk.word_tokenize 的其他选项:

>>> import nltk
>>> nltk.word_tokenize("Hello, this'll split by\n \nwhitespace and also puncutation!")
['Hello', ',', 'this', "'ll", 'split', 'by', 'whitespace', 'and', 'also', 'puncutation', '!']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 2019-11-01
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    相关资源
    最近更新 更多