猿问

求助!在python里怎么可以不用split却提取文件中的具体数据?

如题,详细来讲是,不但不能用split, dictionary和各种collection都不让用!

程序的要求是在一个txt格式的表格里,找到第九行最小的那个数字,并且通过这个数字,同时找到与数字同一列的,年份和四十四行的另一个数值。我的思路里,知道要用slicing,但是尝试写了一些之后发现因为没有剔除一行中的非数字字符所以运行不了。

min_num = 100000
start_index = 0 
index_num = 0
min_index = 0
i = 0


def open_file():
    '''Continously prompt for file until successfully opened.'''
    while True:
        in_file = input("input the filename:")
        try:
            in_file = open ("GDP.txt","r")
            return in_file
        except:
            print("Error. Please input again:")
            
in_file = open_file()

count = 1
for line in in_file:
    if count == 9:
        line9 = line
        print (len(line9))
        print (line9[76:303:12])
        while i < len (line9):
            if line9[i].isdigit() is False:
                checking_value = eval(line9[start_index:i])
                if checking_value < min_num:
                    min_num = checking_value
                    min_index = index_num
                start_index = i + 1 
                index_num += 1
            i += 1
        print(min_num, min_index)
    count += 1
print (line9)

求助!我这样写方法对吗?有错误怎么修改?

GDP.txt

cnaz
浏览 1763回答 3
3回答

cnaz

因为是初学者,所以用的是笨方法。现在写完了一部分,在查找第九行的最小值的时候就出现了问题index = 0 min_value_str=str("10000") n=1 #中间是一段读文件和得到具体行数的操作      for value in line9:     value= line9[76+12*n:76+12*(n+1)]     if value < min_value_str:         min_value_str = value         n += 1 print(line9) print(value)line9可以很好的输出,但是value确实在第三个数字就停下了。如果把n+= 1 和if 平行的话就根本显示不出value请问是哪里出错了呢?
随时随地看视频慕课网APP

相关分类

Python
我要回答