I'm trying to print the first 10 words from a txt file, then the next 10, then the next...
here is what i currently have
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
but i have to have those 2 lines 10 times if i do it this way I'm wondering if there is a more efficient way of doing this
I would suggest you to use regex and split into words instead of splitting by line and splitting the line into words. The way I would do is as such
# 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))
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.