一次从txt文件打印10个字

问题描述 投票:-2回答:1

我正在尝试从txt文件中打印前10个字,然后打印下10个字,然后打印下一个...

这是我目前拥有的


text_file= open("read_it.txt", "r")
lines= text_file.readlines()
lineNum= 0
words= lines[lineNum].split()
wordNum= 0
text_file.close()


def printWords():
    global wordNum
    global lineNum
    global words
    lineNum= lineNum+1
    words= lines[lineNum].split()
    wordNum= 0
    print(words[wordNum])
    wordNum=wordNum+1
    print(words[wordNum])
    wordNum=wordNum+1

但是如果我这样做的话,我必须有那2条线10次我想知道是否有更有效的方法做到这一点

python text-files
1个回答
0
投票

我建议您使用正则表达式并将其拆分为单词,而不是按行拆分并将行拆分为单词。我要做的就是这样

# Get list of words from file "word_filename", default to "test.txt"
def get_words(word_filename='test.txt'):
    # Regular expression library for re.split
    import re
    # Open the text file
    with open(word_filename, 'r') as file:
        # Generate the word list (Split with non-word as delimiter)
        yield from re.split(r'\W+', file.read())

# Get a list of "limit" words, default to 10
def get_n_words(limit=10):
    # Initialize the word list to store 10 words
    words = []
    # Loop through all the words
    for word in get_words():
        # Skip empty word
        if len(word) == 0: continue
        # Check if the word list have "limit" number of words
        if len(words) == limit:
            # Returns the word list
            yield words
            # Reset the word list
            words = []
        # The word list does not have enough size of "limit"
        else:
            # Insert the word
            words.append(word)
    # Check the remaining word list in case it doesn't have size of "limit"
    if len(words) > 0: yield words

# Loop through the 10 word lists
for ten_words in get_n_words():
    # Print the 10 words comma separated
    print(', '.join(ten_words))
© www.soinside.com 2019 - 2024. All rights reserved.