如何在 Python 中提取列表中的单词
我正在自学编程,但到目前为止感觉没什么进展。
我写了一段代码,可以从一个文本文件中的一行里,把每个单词放到一个列表里。比如说,这个列表是 info =[john,guard,single]
。我已经成功地把单词加载到列表里,但在接下来的任务上遇到了一些问题。
我想把每个单词用在一个句子里,但到目前为止我只做到了这一点:
for word in info:
print "My name is ",word[1]
print "My job is " ,word[2]
print "I am ",word[3]
结果却是:
我的名字是 o
我的工作是 h
我叫 n
有人能帮帮我吗?
好的,下面是我的代码:
def loginfo(self):
infolist = []
with open('user.txt') as f:
f = f.readlines()
for line in f:
if str(self.neim.get()) in line:
if str(self.posse.get()) in line:
for word in line.split():
infolist.append(word)
for word in infolist:
print word[]
3 个回答
0
for word in info:
是一个 循环。它的主体部分(缩进的部分)会对 info
中的每一个元素执行一次。
你可以像其他回答所说的那样,通过索引来访问 info
中的元素。你也可以把列表中的元素 拆分 成一些有意义的变量名:
name, job, marital_status = info # the unpacking: 3 variables for 3 list items
print "My name is", name, "my job is", job, "I am", marital_status
当你有一个需要处理的人名单时,这个循环就非常有用了:
people = [ # a list of lists
["Joe", "painter", "single"],
["Jane", "writer", "divorced"],
["Mario", "plumber", "married"]
]
for person_info in people:
print "Name:", person_info[0], "job:", person_info[1], "is", person_info[2]
在循环中直接拆分嵌套的项目是很常见的做法:
for name, job, marital_status in people:
print "Person named", name, "works as a", job, "and is", marital_status
1
你其实不需要那个 for
循环。你可以简单地:
print "My name is ",info[0]
print "My job is " ,info[1]
print "I am ",info[2]
在你的循环中,你是遍历列表,把里面每个字符串都赋值给变量 word
。然后你用索引方法 []
来访问这个单词。这就是为什么你得到的是单个字母而不是单词的原因。另外,计算机的计数是从0开始的,而不是从1,所以索引是这样的:
[0,1,2,3]
所以当你像这样使用一个 for 循环时:
for word in info:
print(word[0])
发生的事情是:
- 首先访问列表中的第一个元素,在你的例子中就是字符串
John
- 接下来你在单词上调用索引方法
word[0]
- 这会访问并返回索引为0的字符,也就是字符串中的第一个字符
- 这个指令集会对列表中的每个元素都执行一次
5
你可以按照下面的方式来做:
li=['My name is {}', "My job is {}", "I am {}"]
info=['john','guard','single']
for x, y in zip(li, info):
print x.format(y)
输出结果是:
My name is john
My job is guard
I am single
或者,你也可以只用一个模板:
print 'My name is {}\nMy job is {}\nI am {}'.format(*info)