非常新鲜,感谢您的耐心等待。
我有一首诗的txt文件。最终我想创建一个字典,使得我的键是#行,值是该行上的文本。例如,如果我的诗是这样的话:
玫瑰红了,
紫罗兰是蓝色的。
我希望我的字典是:
dictionary = {1: 'Roses are red', 2: 'Violets are blue'}
最终我希望我的程序允许我通过输入行号(键)来搜索诗的一行。
我开始这样做了 -
def getFile():
prose = str(input('Please enter the file path for your text file: '))
dictionary = {}
infile = open(prose, 'r')
for line in infile:
dictionary[line] += 1
print(dictionary)
infile.close()
getFile()
但是我迷失了,不知道接下来该做什么。我试过这个,我不明白这一点。任何帮助将非常感激。
答案 0 :(得分:3)
您的问题在这里:
for line in infile: # iterate over each line of text
dictionary[line] += 1 # this tries to use the text as a dict key instead of value
print(dictionary) # I assume this is just here to display the current state of the dictionary eacy loop
您需要一种方法来跟踪您所在的线路。值得庆幸的是,enumerate()
可以提供帮助:
for line_number, line in enumerate(infile):
dictionary[line_number] = line
print(dictionary)
答案 1 :(得分:1)
您可以定义一个跟踪行号的新变量line_num
def getFile():
prose = str(input('Please enter the file path for your text file: '))
dictionary = {}
infile = open(prose, 'r')
line_num = 1
for line in infile:
dictionary[line_num] = line
line_num += 1
print(dictionary)
infile.close()
getFile()
您可以查看字典,其中行号为键,每行为其值
输出:
{1: 'roses are red\n', 2: 'violets are blue'}
答案 2 :(得分:1)
dictionary = {}
f = open(myfile, 'rb')
for index, line in enumerate(f.readlines()):
dictionary[index] = line
f.close()
您的代码存在一些问题 - 首先
for line in infile:
dictionary[line] += 1
此处的行将是字典键,但您希望它是值:
dictionary[index] = line
您目前还没有跟踪索引 - 要么使用上面的枚举,要么创建一个变量并在每次循环时递增它。 我现在的代码只会抛出一个错误,因为你试图增加一个尚不存在的字典[line]。
答案 3 :(得分:0)
我会做一点不同的
def getFile(infile):
prose = str(input('Please enter the file path for your text file: '))
dictionary = {}
infilelines = list(open(prose, 'r'))
for line in enumerate(infilelines):
dictionary[line[0]] = line[1]
infile.close()
return dictionary
print(getfile('someInput.txt'))