Twilight6
发表于 2020-5-25 11:50:08
AisakaTaiga 发表于 2020-5-25 11:46
受教了,大佬我这个程序跑出来只有24个值,循环那里应该怎么改呢
前面初始化一个记录行数的参数:
count_num = 0
然后在这代码
if plot == 'M1151':
下面加个
count_num += 1
把第二个 for 改成 :
for i in range(count_num):
这样试试
Twilight6
发表于 2020-5-25 11:56:20
Twilight6 发表于 2020-5-25 11:50
前面初始化一个记录行数的参数:
然后在这代码
对了 订正下 你 第二个for 改成
for i in range(count_num-1):
Twilight6
发表于 2020-5-25 12:07:45
刚刚没去试着跑下,我去跑了下发现看不懂写入的文件是啥,你能说说你要怎么整理写入新txt文件我在帮你改改看
AisakaTaiga
发表于 2020-5-25 12:31:17
Twilight6 发表于 2020-5-25 12:07
刚刚没去试着跑下,我去跑了下发现看不懂写入的文件是啥,你能说说你要怎么整理写入新txt文件我在帮你改 ...
嗯嗯,想写成一个类似原文件类型的txt,只是把小时那一列不要变成日降水,类似这种:
区站号 年份 月份 日期 降水(mm)
M1151 2010 1 1 0.0
M1151 2010 1 2 1.0
M1151 2010 1 3 1.3
但是我编的时候不知道怎么输出成这样的,程序里面就只输出了日降水量,就是最后一行
Twilight6
发表于 2020-5-25 12:53:17
AisakaTaiga 发表于 2020-5-25 12:31
嗯嗯,想写成一个类似原文件类型的txt,只是把小时那一列不要变成日降水,类似这种:
区站号 年份 ...
是怎么计算降水的?还有 定时自记降水(mm)也不要了是吗?
AisakaTaiga
发表于 2020-5-25 13:30:36
Twilight6 发表于 2020-5-25 12:53
是怎么计算降水的?还有 定时自记降水(mm)也不要了是吗?
定时自记降水就是小时的降水,计算降水就是把一天24h的加起来~
Twilight6
发表于 2020-5-25 13:31:19
AisakaTaiga 发表于 2020-5-25 13:30
定时自记降水就是小时的降水,计算降水就是把一天24h的加起来~
原来如此 骚等、
AisakaTaiga
发表于 2020-5-25 13:54:25
Twilight6 发表于 2020-5-25 13:31
原来如此 骚等、
要的~~
Twilight6
发表于 2020-5-25 13:54:51
AisakaTaiga 发表于 2020-5-25 13:54
要的~~
四川的噻?
Twilight6
发表于 2020-5-25 14:25:10
试试看效果是不是你想要的那种
f = open('逐小时降水.txt',encoding='utf-8')
data = []
number = 0
for each_line in f:
temp = []
if each_line[:3] != "区站号":
(plot, year, mouth, day, time, num) =
if plot == 'M1151':
temp.append(year)
temp.append(mouth)
temp.append(day)
temp.append(time)
if num == '/' or num == '/\n':
num = 0.0
temp.append(float(num))
data.append(tuple(temp))
# print(data)
new_data = []
for i in range(len(data)-1):
if data == data and data == data anddata == data:
number += data
continue
number += (data + data)
new_data.append((data + tuple((str(number),'')))[:-1])
number = 0
file_name = '日降水量' + '.txt'
tp_file = open(file_name, 'w',encoding='utf-8')
tp_file.write('{:^6}{:^6}{:^6}{:^10}\n'.format('年份','月份','日期','日降水量(mm)'))
for i in range(len(new_data)):
tp_file.write('{:^8}{:^8}{:^8}{:^10.2f}\n'.format(new_data,new_data,new_data,float(new_data)))
tp_file.close()
f.close()
AisakaTaiga
发表于 2020-5-25 15:56:17
Twilight6 发表于 2020-5-25 14:25
试试看效果是不是你想要的那种
运行了一下,报错了下面的语句,是什么原因呀{:10_278:}
for each_line in f:
File "E:\python\lib\codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc7 in position 0: invalid continuation byte
Twilight6
发表于 2020-5-25 15:57:36
AisakaTaiga 发表于 2020-5-25 15:56
运行了一下,报错了下面的语句,是什么原因呀
for each_line in f:
File "E:\python\lib ...
tp_file = open(file_name, 'w',encoding='utf-8')
f = open('逐小时降水.txt',encoding='utf-8') 把 encoding='utf-8' 删了
AisakaTaiga
发表于 2020-5-25 16:01:34
Twilight6 发表于 2020-5-25 15:57
把 encoding='utf-8' 删了
删了以后出现了这个问题~
(plot, year, mouth, day, time, num) =
ValueError: not enough values to unpack (expected 6, got 1)
Twilight6
发表于 2020-5-25 16:03:51
AisakaTaiga 发表于 2020-5-25 16:01
删了以后出现了这个问题~
(plot, year, mouth, day, time, num) =
你的txt 文本 是不是有些地方没按规律...
Twilight6
发表于 2020-5-25 16:04:24
AisakaTaiga 发表于 2020-5-25 16:01
删了以后出现了这个问题~
(plot, year, mouth, day, time, num) =
我用你给我的数据已经可以正常运行了 你可以试试你把你给我的数据拿去试着运行下
AisakaTaiga
发表于 2020-5-25 16:05:19
Twilight6 发表于 2020-5-25 16:03
你的txt 文本 是不是有些地方没按规律...
我检查一下~ 谢谢大佬帮助!
AisakaTaiga
发表于 2020-5-25 16:50:54
Twilight6 发表于 2020-5-25 16:04
我用你给我的数据已经可以正常运行了 你可以试试你把你给我的数据拿去试着运行下
大佬,我用给你的数据运行仍然是这个问题,不知道是因为什么,百度了一下说是什么换行符的问题,可是我把换行符替换了以后就不能运行出我想要的数据了。求解答
问题如下:
(plot, year, mouth, day, time, num) =
ValueError: not enough values to unpack (expected 6, got 1)
Twilight6
发表于 2020-5-25 16:55:13
AisakaTaiga 发表于 2020-5-25 16:50
大佬,我用给你的数据运行仍然是这个问题,不知道是因为什么,百度了一下说是什么换行符的问题,可是我把 ...
哦哦 那我知道了 你文本里面是有空行的原因才导致报错,if条件过滤下空行的即可
if each_line[:3] != "区站号" and each_line != "\n":
AisakaTaiga
发表于 2020-5-25 17:51:23
Twilight6 发表于 2020-5-25 16:55
哦哦 那我知道了 你文本里面是有空行的原因才导致报错,if条件过滤下空行的即可
仍然是这个问题,我试了我给你的样本和原始数据都是这个问题{:10_266:}
Twilight6
发表于 2020-5-25 17:59:54
AisakaTaiga 发表于 2020-5-25 17:51
仍然是这个问题,我试了我给你的样本和原始数据都是这个问题
那在if 前面一行加个
each_line.strip() 试试