Python 从txt文件一次打印10个字

Python 从txt文件一次打印10个字,python,text-files,Python,Text Files,我正在尝试打印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

我正在尝试打印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
但是如果我这样做的话,那两行必须重复10次
我想知道是否有更有效的方法来实现这一点

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

# 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))

您可以使用for循环在范围10:printwords[wordNum+i]中为i重复该操作