如何将字符串拆分成单词列表?
- 2024-11-19 08:38:00
- admin 原创
- 10
问题描述:
如何拆分句子并将每个单词存储在列表中?例如
"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作为分隔符...如果未指定sep
None
或为,则应用不同的拆分算法:连续的空格将被视为单个分隔符,并且如果字符串有前导或尾随空格,则结果将不会在开头或结尾包含空字符串。
>>> 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']
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件