如何将字符串拆分成单词列表?

2024-11-19 08:38:00
admin
原创
200
摘要:问题描述:如何拆分句子并将每个单词存储在列表中?例如"these are words" ⟶ ["these", "are", "words"] 要按其他分隔符进行拆分,请参阅在 python 中使用分隔符拆分字符串。要拆分...

问题描述:

如何拆分句子并将每个单词存储在列表中?例如

"these are words"   ⟶   ["these", "are", "words"]

要按其他分隔符进行拆分,请参阅在 python 中使用分隔符拆分字符串。

要拆分成单个字符,请参阅如何将字符串拆分成字符列表?。


解决方案 1:

给定一个字符串sentence,将每个单词存储在一个名为的列表中words

words = sentence.split()

解决方案 2:

text要根据连续的空格来分割字符串:

words = text.split()      

要按自定义分隔符拆分字符串,text例如","

words = text.split(",")   

words变量将是一个并包含来自分隔符上的拆分的list单词。text

解决方案 3:

使用str.split()

返回字符串中的单词列表,使用sep作为分隔符...如果未指定sepNone或为,则应用不同的拆分算法:连续的空格将被视为单个分隔符,并且如果字符串有前导或尾随空格,则结果将不会在开头或结尾包含空字符串。

>>> line = "a sentence with a few words"
>>> line.split()
['a', 'sentence', 'with', 'a', 'few', 'words']

解决方案 4:

根据你计划用句子列表做什么,你可能需要查看Natural Language Took Kit。它主要处理文本处理和评估。你也可以用它来解决你的问题:

import nltk
words = nltk.word_tokenize(raw_sentence)

这还有分离标点符号的额外好处。

例子:

>>> import nltk
>>> s = "The fox's foot grazed the sleeping dog, waking it."
>>> words = nltk.word_tokenize(s)
>>> words
['The', 'fox', "'s", 'foot', 'grazed', 'the', 'sleeping', 'dog', ',', 
'waking', 'it', '.']

这使您可以过滤掉任何您不想要的标点符号并只使用单词。

string.split()请注意,如果您不打算对句子进行任何复杂的操作,则使用其他解决方案会更好。

[已编辑]

解决方案 5:

这个算法怎么样?根据空格分割文本,然后修剪标点符号。这会小心地从单词边缘删除标点符号,而不会损害单词内的撇号,例如we're

>>> text
"'Oh, you can't help that,' said the Cat: 'we're all mad here. I'm mad. You're mad.'"

>>> text.split()
["'Oh,", 'you', "can't", 'help', "that,'", 'said', 'the', 'Cat:', "'we're", 'all', 'mad', 'here.', "I'm", 'mad.', "You're", "mad.'"]

>>> import string
>>> [word.strip(string.punctuation) for word in text.split()]
['Oh', 'you', "can't", 'help', 'that', 'said', 'the', 'Cat', "we're", 'all', 'mad', 'here', "I'm", 'mad', "You're", 'mad']

解决方案 6:

我希望我的 python 函数拆分一个句子(输入)并将每个单词存储在一个列表中

str().split()方法执行以下操作,它获取一个字符串,并将其拆分为一个列表:

>>> the_string = "this is a sentence"
>>> words = the_string.split(" ")
>>> print(words)
['this', 'is', 'a', 'sentence']
>>> type(words)
<type 'list'> # or <class 'list'> in Python 3.0

解决方案 7:

如果您想要列表中 某个单词或句子的所有字符,请执行以下操作:

print(list("word"))
#  ['w', 'o', 'r', 'd']


print(list("some sentence"))
#  ['s', 'o', 'm', 'e', ' ', 's', 'e', 'n', 't', 'e', 'n', 'c', 'e']

解决方案 8:

shlex有一个.split()函数。它与 不同之处str.split()在于它不保留引号并将引用的短语视为单个单词:

>>> import shlex
>>> shlex.split("sudo echo 'foo && bar'")
['sudo', 'echo', 'foo && bar']

注意:它适用于类 Unix 命令行字符串。它不适用于自然语言处理。

解决方案 9:

如果你想将一个字符串拆分成一个单词列表,并且该字符串中有标点符号,那么建议删除它们。例如,str.split()以下字符串为

s = "Hi, these are words; these're, also, words."
words = s.split()
# ['Hi,', 'these', 'are', 'words;', "these're,", 'also,', 'words.']

其中Hi,,、words;also,带有标点符号。Python 有一个内置string模块,该模块将标点符号字符串作为属性 ( string.punctuation)。删除标点符号的一种方法是简单地从每个单词中删除它们:

import string
words = [w.strip(string.punctuation) for w in s.split()]
# ['Hi', 'these', 'are', 'words', "these're", 'also', 'words']

另一个方法是制作一个全面的字典,列出要删除的字符串

table = str.maketrans('', '', string.punctuation)
words = s.translate(table).split() 
# ['Hi', 'these', 'are', 'words', 'thesere', 'also', 'words']

它不处理像这样的单词these're,因此它处理这种情况nltk.word_tokenize可以按照tgray 建议的那样使用。仅过滤掉完全由标点符号组成的单词。

import nltk
words = [w for w in nltk.word_tokenize(s) if w not in string.punctuation]
# ['Hi', 'these', 'are', 'words', 'these', "'re", 'also', 'words']

解决方案 10:

拆分单词而不破坏单词内的撇号请找到input_1和input_2摩尔定律

def split_into_words(line):
    import re
    word_regex_improved = r"(w[w']*w|w)"
    word_matcher = re.compile(word_regex_improved)
    return word_matcher.findall(line)

#Example 1

input_1 = "computational power (see Moore's law) and "
split_into_words(input_1)

# output 
['computational', 'power', 'see', "Moore's", 'law', 'and']

#Example 2

input_2 = """Oh, you can't help that,' said the Cat: 'we're all mad here. I'm mad. You're mad."""

split_into_words(input_2)
#output
['Oh',
 'you',
 "can't",
 'help',
 'that',
 'said',
 'the',
 'Cat',
 "we're",
 'all',
 'mad',
 'here',
 "I'm",
 'mad',
 "You're",
 'mad']
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用