我想返回文本文件中找到的所有单词。这是我到目前为止的代码。
def get_dictionary_word_list():
f = open('dictionary.txt')
for word in f.read().split():
print(word)
它使用print fucntion但不是打印我想要返回文本文件中所有单词的单词。使用return它只显示' aa'而不是文件中的文字。我不知道为什么它不能使用return?
答案 0 :(得分:2)
如果你在循环中使用了return,那么它会在第一次迭代时返回,而你只返回第一个单词。
你想要的是单词的聚合 - 或者更好的是,返回你从分裂单词中获得的数组。您可能想要清理换行符。
def get_dictionary_word_list():
# with context manager assures us the
# file will be closed when leaving the scope
with open('dictionary.txt') as f:
# return the split results, which is all the words in the file.
return f.read().split()
要获得字典,您可以使用它(处理换行符):
def get_dictionary_word_list():
# with context manager assures us the
# file will be closed when leaving the scope
with open('dictionary.txt') as f:
# create a dictionary object to return
result = dict()
for line in f.read().splitlines():
# split the line to a key - value.
k, v = line.split()
# add the key - value to the dictionary object
result[k] = v
return result
要获取关键值项目,您可以使用类似的内容返回generator(请记住,只要生成器保持打开状态,文件就会保持打开状态)。你可以修改它只返回单词,如果这是你想要的,它非常简单:
def get_dictionary_word_list():
# with context manager assures us the
# file will be closed when leaving the scope
with open('dictionary.txt') as f:
for line in f.read().splitlines():
# yield a tuple (key, value)
yield tuple(line.split())
第一个函数的输出示例:
xxxx:~$ cat dictionary.txt
a asd
b bsd
c csd
xxxx:~$ cat ld.py
#!/usr/bin/env python
def get_dictionary_word_list():
# with context manager assures us the
# file will be closed when leaving the scope
with open('dictionary.txt') as f:
# return the split results, which is all the words in the file.
return f.read().split()
print get_dictionary_word_list()
xxxx:~$ ./ld.py
['a', 'asd', 'b', 'bsd', 'c', 'csd']
答案 1 :(得分:1)
这个怎么样:
def get_dictionary_word_list(fname):
with open(fname) as fh:
return set(fh.read().split())
答案 2 :(得分:0)
def get_dictionary_word_list():
f = open('dictionary.txt')
ll=[]
for word in f.read().split():
ll.append(word)
return ll
尝试列表
答案 3 :(得分:0)
只需尝试: -
def func():
with open('new.txt') as f:
return f.read() # returns complete file,
with open('out.txt', 'w+') as w:
w.write(func())
w.seek(0)
print w.read()
Generators
: -
def func():
with open('new.txt') as f:
yield f.read()
data = func()
with open('out2.txt', 'w+') as w:
for line in data:
w.write(line) #or you may use map(w.write, line)
w.seek(0)
print w.read()