如何在 Python 中提取列表中的单词

0 投票
3 回答
20130 浏览
提问于 2025-04-18 00:22

我正在自学编程,但到目前为止感觉没什么进展。

我写了一段代码,可以从一个文本文件中的一行里,把每个单词放到一个列表里。比如说,这个列表是 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)

撰写回答