cc9542 2022-04-14 01:11 采纳率: 96.7%
浏览 111
已结题

python 文件操作 如何判断写入数据前是否存在相同数据.判断输入操作是否格式正确

"""
data.txt文件如下

id  date        city     temp   wind
0   03/01/2016   BJ      8      5
1   17/01/2016   BJ      12     2
2   31/01/2016   BJ      19     2
3   14/02/2016   BJ      -3     3
4   28/02/2016   BJ      19     2
5   13/03/2016   BJ      5      3
6   27/03/2016   SH      -4     4
7   10/04/2016   SH      19     3
"""
import time
import re


def write(dataset):
    c = open(dataset, "a+")
    c.seek(0)
    for line in c.readlines()[1:]:  # 8行 到 12行 是获取数据id值
        if len(line.split()) == 0:
            continue
        j = re.split(r"\s+", line.strip())
    b = int(j[0])
    print("输入日期   格式'日/月/年' ")
    while True:
        r_q = input("日期:")
        if not r_q:
            c.close()  # 日期为空时退出
            break
        try:
            time.strptime(r_q, "%d/%m/%Y")
        except:
            print("格式不正确,请重新输入.\n格式'日/月/年' ")
            continue
        else:
            c_s = input("城市:")
            try:
                w_d = int(input("温度:"))
                f_l = int(input("风力:"))
            except:
                print("输入错误 温度和风力只能输入数字")
                continue
            b += 1
            c.seek(2)
            c.write(f"{b}   {r_q}   {c_s}   {w_d}   {f_l}\n")

c = "data.txt"
write(c)

问题:
1.如何在 -4 行 写入前判断 txt 文件 是否存在相同的数据(日期 和 城市相同),存在则停止写入 跳回 15 行 进行重新输入
2. 给 -13 行 (输入城市名), 判断输入格式是否为大写字母,输入错误则重新输入
3. 给 温度和风力添加一个限制的值 如 温度 -50到100度之间 风力 1 到 9 之间 整数类型

  • 写回答

2条回答 默认 最新

  • ningzip 2022-04-14 08:17
    关注

    先按行读取,然后用in判断:

    list_line = file.readlines()  #有\n
    # 无\n: file.read().split('\n')
    if string in list_line:
        print('数据重复!')
        continue
    

    判断输入格式是否为大写字母:

    if string != string.upper():  #小写转化为大写
        print('格式错误!')
        continue
    

    在except后面继续写:

    else:
        # 无需再次判断类型,不出错即为整数
        if -50 <= w_d <= 100 and 1 <= f_l <= 9:
            ...
        else:
            print('数据超限!')
            continue
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月24日
  • 已采纳回答 4月24日
  • 创建了问题 4月14日

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥20 求用stm32f103c6t6在lcd1206上显示Door is open和password:
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法