我的.txt
文件如下所示:
1 2
3 4
5 6
7
a 8
9 10
我需要检查一行上的两个值是否为整数,如果它们不是它会给出错误并继续。
然后使用左侧的值作为键将值更改为字典,将右侧的值更改为值,但仅当两个值都是整数时才会更改。
如果它们不是两个整数,并且密钥已经存在,我必须添加一个值。如果密钥不存在,我会添加一个值和一个密钥。
在所有这些之前,我需要使用原始输入打开文本文件,如果插入了无效输入则会出错。 (我得到了这部分工作)
这是我到目前为止所做的:
while True:
try:
fileName=raw_input('File name:')
File2=open(fileName,'r+')
break
except IOError:
print 'Please enter valid file name!'
for line in File2:
if line==int:
continue
else:
print 'This line does not contain a valid Key and Value'
myDict = {}
for line in File2:
line = line.split()
if not line:
continue
myDict[line[0]] = line[1:]
print line
答案 0 :(得分:2)
以下内容有望让您更进一步。当文件中的值不是整数时,您不清楚要做什么。下面显示了您可以添加此内容的位置:
import os
myDict = {}
while True:
fileName = raw_input('File name: ')
if os.path.isfile(fileName):
break
else:
print 'Please enter valid file name!'
with open(fileName, 'r') as f_input:
for line_number, line in enumerate(f_input, start=1):
cols = line.split()
if len(cols) == 2:
try:
v1 = int(cols[0])
v2 = int(cols[1])
myDict[v1] = v2
except ValueError, e:
print "Line {} does not use integers - {}, {}".format(line_number, cols[0], cols[1])
# If they're not both integers, and key is already present I have to add a value
# <Add that here>
else:
print "Line {} does not contain 2 entries".format(line_number)
print myDict
因此,对于您的示例文件,这将为您提供以下类型的输出:
File name: x
Please enter valid file name!
File name: input.txt
Line 4 does not contain 2 entries
Line 5 does not use integers - a, 8
{1: 2, 3: 4, 5: 6, 9: 10}
我建议您使用Python的with
命令。这会自动为您关闭文件。