我试图弄清楚如何让我的程序逐行读取我的文本文件的前5列而不读取上面的文本以及列和行之间的文本,因为它不包含我需要的数据找到记录温度最低的日期和年份。
这是我的文本文件的示例:
05/01 80 2002 7 2018 19 1966 61 2013
05/02 77 1950 3 1945 22 1936 58 2001
---------------------------------------------------------------------------
Day Rec Max Year Rec Min Year Max Year Min Year
---------------------------------------------------------------------------
08/01 79 2002 8 1981 28 1900 54 1988
08/02 79 1989 5 1971 31 1994 60 1998
这是我到目前为止的代码(下面)。我用print来检查我是否只得到了我需要的数据,但是当我运行程序时,我也得到了文本和连字符。它并不多,但我仍在努力搞清楚,但我不知道接下来该做什么。感谢所有愿意提前帮助我的人。
我正在尝试进行更改并添加到下面的现有代码中以查找预期的输出。
def main():
file = open ('filename.txt', 'r') #open the file
for num in file:
numbers = num.split() #splits num
if len(numbers)> 5:
print(numbers[0], numbers[1], numbers[2], numbers[3],
numbers[4]) #prints the columns
main()
我从代码中获得的输出:
05/01 80 2002 7 2018
05/02 77 1950 3 1945
Day Rec_Max Year Rec_Min Year
08/01 79 2002 8 1981
08/02 79 1989 5 1971
预期输出(示例):
Day: 01/01
Year: 2008
Lowest Temperature: 32
这是我对代码进行的更改。
def main():
file = open ('filename.txt', 'r')
for num in file.read().splitlines():
i = num.split()
if len(i)> 6:
print('Day: {}\nYear: {}\nLowest Temperature: {}\n'.format(i[0], i[4], i[1]))
main()
这是我在更改代码后获取输出的示例。如何在输出中读取文本并仅读取数字?
日:88
年份:1910年
最低温度:88
日:最大
年份:年份
最低温度:最大
答案 0 :(得分:1)
对于测试数据,您可以忽略没有数字的行,并使用format()
:
with open('test.txt') as f:
data = f.read().splitlines()
data = [i.split() for i in data if any(j.isdigit() for j in i)]
for i in data:
print('Day: {}\nYear: {}\nLowest Temperature: {}\n'.format(i[0], i[4], i[1]))
输出:
Day: 05/01
Year: 2018
Lowest Temperature: 80
Day: 05/02
Year: 1945
Lowest Temperature: 77
Day: 08/01
Year: 1981
Lowest Temperature: 79
Day: 08/02
Year: 1971
Lowest Temperature: 79