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() 试试
页: 1 [2] 3
查看完整版本: 向大佬求助,想编个程序算日降水量