我怎么才能只阅读文本文件每行的第一个单词?

时间:2014-04-29 18:06:20

标签: python python-3.x

我想知道如何只阅读文本文件中每行的第一个字。我尝试了各种代码并尝试更改代码但只能设法从文本文件中读取整行。 我使用的代码如下所示:

QuizList = []
with open('Quizzes.txt','r') as f:
            for line in f:
                QuizList.append(line)
        line = QuizList[0]
        for word in line.split():
            print(word)

这是指尝试仅从第一行提取第一个单词。为了重复每一行的过程,我将执行以下操作:

QuizList = []
with open('Quizzes.txt','r') as f:
            for line in f:
                QuizList.append(line)
capacity = len(QuizList)
capacity = capacity-1
index = 0
while index!=capacity:
    line = QuizList[index]
    for word in line.split():
        print(word)
        index = index+1

6 个答案:

答案 0 :(得分:10)

您在错误的位置使用split,请尝试:

for line in f:
    QuizList.append(line.split(None, 1)[0]) # add only first word

答案 1 :(得分:4)

改编成一个单行,如同Jon Clements在评论中所建议的那样,该单行也更有效率。

with open('Quizzes.txt', 'r') as f:
    wordlist = [line.split(None, 1)[0] for line in f]

这与你的问题无关,但是line.split(无,1)不会让你感到困惑,它会更有效率,因为它只会将行分开1次。

来自str.split([sep[, maxsplit]]) docs

  

如果未指定sep或为None,则使用不同的拆分算法   applied:连续空格的运行被视为单个   分隔符,结果将在开始时不包含空字符串   或者如果字符串具有前导或尾随空格则结束。所以,   拆分空字符串或只包含空格的字符串   使用无分隔符返回[]。

' 1 2 3 '.split()返回['1', '2', '3']

' 1 2 3 '.split(None, 1)返回['1', '2 3 ']

答案 2 :(得分:3)

with Open(filename,"r") as f:
    wordlist = [r.split()[0] for r in f]

答案 3 :(得分:1)

我会选择str.split和类似的方法,但是对于completness,如果您需要提取更复杂的数据,则使用mmapre的组合:

import mmap, re

with open('quizzes.txt') as fin:
    mf = mmap.mmap(fin.fileno(), 0, access=mmap.ACCESS_READ)
    wordlist = re.findall('^(\w+)', mf, flags=re.M)

答案 4 :(得分:0)

您应该一次阅读一个字符:

import string

QuizList = []
with open('Quizzes.txt','r') as f:
    for line in f:
        for i, c in enumerate(line):
            if c not in string.letters:
                print line[:i]
                break

答案 5 :(得分:0)

l = [] 打开('task-1.txt','rt')作为myfile:

for x in myfile:                
    l.append(x)

对于我在l中:     打印[i.split()[0]]