python拆分字符串生成列表_关于python:如何将字符串拆分为列表?
我希望我的python函数分割一个句子(输入)并将每个单词存储在一个列表中。我当前的代码将句子拆分,但不将单词存储为列表。我该怎么做?
1
2
3
4
5
6
7
8
9
10def split_line(text):
# split the text
words = text.split()
# for each word in the line:
for word in words:
# print the word
print(words)
此代码的哪些部分不起作用?您能提供错误信息或您遇到的问题吗?
实际上,您将打印列表中每个单词的完整单词列表。我认为你打算用print(word)作为最后一行。
1text.split()
这应该足以将每个单词存储在一个列表中。words已经是句子中的单词列表,因此不需要循环。
第二,这可能是一个打字错误,但你的循环有点混乱。如果您真的想使用append,它将是:
1words.append(word)
不
1word.append(words)
在任何连续运行的空白处拆分text中的字符串。
1words = text.split()
在分隔符:","上拆分text中的字符串。
1words = text.split(",")
words变量将是一个list并包含分隔符上text拆分的单词。
分裂()
Return a list of the words in the string, using sep as the delimiter
... If sep is not specified or is None, a different splitting algorithm is applied: runs of consecutive whitespace are regarded as a single separator, and the result will contain no empty strings at the start or end if the string has leading or trailing whitespace.
1
2
3
4>>> line="a sentence with a few words"
>>> line.split()
['a', 'sentence', 'with', 'a', 'few', 'words']
>>>
@warvariuc-应该链接到docs.python.org/2/library/stdtypes.html str.split
根据你计划如何处理你的句子列表,你可能想看看自然语言的工具包。它主要处理文本处理和评估。您还可以使用它来解决您的问题:
1
2import nltk
words = nltk.word_tokenize(raw_sentence)
这样做还有一个额外的好处,那就是拆分标点符号。
例子:
1
2
3
4
5
6>>> 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()的其他解决方案会更好。
[编辑]
split()依赖于空格作为分隔符,因此它将无法分隔连字符单词,长划分隔短语也将无法拆分。如果句子中包含任何没有空格的标点符号,这些标点符号将无法粘贴。对于任何真实的文本解析(比如这个注释),您的nltk建议比split()好得多。
可能有用,尽管我不会将其描述为拆分为"单词"。根据任何简单的英语定义,','和"'s"不是单词。通常,如果你想用标点符号的方式把上面的句子分割成"单词",你可以去掉逗号,把"fox's"作为一个单词。
截至2016年4月,python 2.7+。
这个算法怎么样?在空白处拆分文本,然后修剪标点符号。这会小心地删除单词边缘的标点符号,而不会损害单词内部的撇号,如we're。
1
2
3
4
5
6
7
8
9>>> 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']
很好,但有些英语单词确实包含尾随标点。例如,e.g.和Mrs.中的尾随点和所有格frogs'中的尾随撇号(如frogs' legs中的尾随撇号)是单词的一部分,但将由该算法去除。正确处理缩写词可以通过检测点分隔的初始化和使用特殊情况字典(如Mr.和Mrs.来大致实现。区分所有格撇号和单引号是非常困难的,因为它需要解析包含单词的句子的语法。
@Markamery你说得对。在我看来,有些标点符号,比如em破折号,可以不加空格地分隔单词。
I want my python function to split a sentence (input) and store each word in a list
str().split()方法是这样做的,它使用一个字符串,将其拆分为一个列表:
1
2
3
4
5
6>>> the_string ="this is a sentence"
>>> words = the_string.split("")
>>> print(words)
['this', 'is', 'a', 'sentence']
>>> type(words)
# or in Python 3.0
你的问题是因为打字错误,你写的是print(words),而不是print(word):
将word变量重命名为current_word,这是您拥有的:
1
2
3
4def split_line(text):
words = text.split()
for current_word in words:
print(words)
…当你应该这样做的时候:
1
2
3
4def split_line(text):
words = text.split()
for current_word in words:
print(current_word)
如果出于某种原因,您希望在for循环中手动构造一个列表,那么您将使用list append()方法,这可能是因为您希望降低所有单词的大小写(例如):
1
2
3my_list = [] # make empty list
for current_word in words:
my_list.append(current_word.lower())
或者更整洁一点,使用列表理解:
1my_list = [current_word.lower() for current_word in words]
shlex具有.split()功能。它与str.split()的不同之处在于,它不保留引号,将引号短语视为单个单词:
1
2
3>>> import shlex
>>> shlex.split("sudo echo 'foo && bar'")
['sudo', 'echo', 'foo && bar']
我想你是因为打字错误而困惑。
用循环中的print(word)替换print(words),使每个字都打印在不同的行上。
如果你想要一个单词/句子的所有字符在一个列表中,请执行以下操作:
1
2
3
4
5
6print(list("word"))
# ['w', 'o', 'r', 'd']
print(list("some sentence"))
# ['s', 'o', 'm', 'e', ' ', 's', 'e', 'n', 't', 'e', 'n', 'c', 'e']
python拆分字符串生成列表_关于python:如何将字符串拆分为列表?相关推荐
- python turtle随机生成图形_用 Python Turtle 模块做小游戏 (1) - 随机移动,万花筒和点图...
最近接触到 Python的一个绘图模块 Turtle,学习以后,发现这是一个很有趣的模块.我们可以利用这个模块进行画图,甚至做一些怀旧的小游戏.这个模块的文档链接如下. 简单的说,可以把画板想象成一个 ...
- python做审计底稿视频_最新Python教学视频,每天自学俩小时,让你offer拿到手软...
2020最新Python零基础到精通资料教材,干货分享,新基础Python教材,看这里,这里有你想要的所有资源哦,最强笔记,教你怎么入门提升!让你对自己更加有信心,重点是资料都是免费的,免费!!! 如 ...
- python grep 列表_关于python:跨多个文档的字符串搜索 – grep?
如果给出文档列表,文档中包含字符串,您如何进行搜索并从文档中搜索并返回包含您要搜索的字符串的文档列表? 对于此问题陈述,我如何在Python或C中实现程序? 我考虑过grep,但我不确定如何实现原生P ...
- python随机生成二维列表_对python产生随机的二维数组实例详解
对python产生随机的二维数组实例详解 最近找遍了python的各个函数发现无法直接生成随机的二维数组,其中包括random()相关的各种方法,都没有得到想要的结果.最后在一篇博客中受到启发,通过列 ...
- python生成多个随机数列表_在python中生成1到6之间的6个随机数的列表
使用 list comprehension: import random def startTheGame(): mylist=[random.randint(1, 6) for _ in range ...
- python字符串去掉空行_从python中的字符串中删除空格
python字符串去掉空行 如何在python中删除字符串中的空格 (How to remove whitespaces in a string in python) str.lstrip()str. ...
- python不属于字符串的是_【python cookbook】python过滤字符串中不属于指定集合的字符...
1 #!/usr/bin/python 2 #-*- coding: utf-8 -*- 3 4 #过滤字符串中不属于指定集合的字符 5 6 importstring7 8 #生成所有字符的可复用的字 ...
- 不属于python标准库的是_《Python Cookbook(第2版)中文版》——1.10 过滤字符串中不属于指定集合的字符-阿里云开发者社区...
本节书摘来自异步社区<Python Cookbook(第2版)中文版>一书中的第1章,第1.10节,作者[美]Alex Martelli , Anna Martelli Ravenscro ...
- python随机生成车牌_使用Python自动化获取全国每个城市的车牌代码
最近有这样一需求,需要获取12123交管查询网站上的全国每个城市对应的城市id和车牌代码.最初的想法是直接用Python写个爬虫,遍历每个城市,然后用Xpath提取DOM节点数据就好了.然而在实际操作 ...
最新文章
- Oracle wrap 和 unwrap( 加密与解密) 说明
- Python程序设计题解【蓝桥杯官网题库】 DAY11-算法训练
- TCL通讯将刊行代表1.09亿股的台湾存托凭据
- 科技在进步,一文带你看看 MATLAB R2020a 为工程师和科学家带来哪些 AI 功能?
- 【C/C++ string】之strcpy函数
- docker 三种挂载文件路径方式
- qt socket 传递结构体 结构体中有list_计算机网络应用--Socket编程实验(二)
- 通过设置rowcount,从Sybase数据库中分页取数
- Saltstack 报错 python-crypto randomPool_DeprecationWarning:
- mysql 备份工具简介
- [na]思科产品选型pdf
- 【兼容封装】addEventListener()和attachEvent()跨浏览器的兼容性处理
- 数学中蕴含的人生哲理
- 用JAVA实现简单点餐系统
- linux加密文件系统
- dedecms模板配置大概流程
- NeuroImage:对情绪表现的快速接近—回避反应反映了基于价值的决策:来自脑电图研究的神经证据
- CSS的3d翻滚特效
- 应用程序迁移_加速绿色IT-关于应用程序迁移和重新托管的实用指南
- HTML5讲解与演示转载整理