我给了一个类似于以下内容的文本文件......
hello 20
world 30
i'm 50
ok 20
我正在尝试使用插入排序来排列数据的数字部分。我的代码如下所示......
def insertion_sort():
filename = input('Enter filename: ')
lst = []
for line in open(filename):
lst.append(int(line))
print(lst)
for index in range(1,len(lst)):
value = lst[index]
leftvalue = index -1
while leftvalue >= 0 and lst[leftvalue] > value:
if value < lst[leftvalue]:
lst[leftvalue + 1] = lst[leftvalue]
lst[leftvalue] = value
leftvalue = leftvalue - 1
else:
break
return lst == insertion_sort()
我收到以下错误...
ValueError: invalid literal for int() with base 10: 'Merchant_0 96918\n'
我尝试使用float替换为int但我无法将字符串转换为浮点数。
答案 0 :(得分:0)
你不能得到一个整数:
lst.append(int(line))
如果包含行,请说“世界30”
你准备得到什么?如果要获取数值,请尝试:
int(line.split(' ')[1])
或更好(即使输入行中有多个空格也能正常工作):
import re
reobj=re.search('(\d+)$',line)
int(reobj.group(1))
整个分拣过程变为:
import operator
import re
lines = {}
for line in open('tst.txt'):
reobj=re.search('(\d+)$',line)
int_key=int(reobj.group(1))
value=line[0:reobj.start()]
lines[int_key]=value
# See : http://stackoverflow.com/questions/613183/python-sort-a-dictionary-by-value?rq=1
print "Sorted : ", sorted(lines.iteritems(), key=operator.itemgetter(0))