首页 > 解决方案 > 如何根据用户输入编辑特定行上的特定单词?

问题描述

作为我大学项目的一部分,我正在开发机票预订系统。不允许使用模块和全局变量。我的项目包含航班时刻表,它保存并存储在名为 schedule.txt 的 .txt 文件中。还说我需要为管理员编写代码,他们可以在其中自由编辑航班时刻表中的详细信息。航班时刻表的详细信息包括:预订代码、航班号、航空公司、从、至和出发日期。

schedule = open("schedule.txt", "w")
schedule.write("\n[100] MH371, MALAYSIAN AIRLINE, KUALA LUMPUR, BEIJING , 19-12-2021, N/A"
               "\n[200] SX849, AIRASIA          , KUALA LUMPUR, BANGKOK , 05-01-2022, N/A"
               "\n[300] MH234, MALAYSIAN AIRLINE, KUALA LUMPUR, LANGKAWI, 03-02-2022, N/A"
               "\n[400] FD709, KOREA AIRLINE    , KUALA LUMPUR, SEOUL   , 29-12-2021, N/A"
               "\n[500] Z1314, CATHAY AIRLINE   , KUALA LUMPUR, TOKYO   , 21-01-2022, N/A"
               "\n[600] HY520, EMIRATES         , KUALA LUMPUR, TAIPEI  , 15-11-2021, N/A"
               "\n[700] TT879, MALINDO AIR      , KUALA LUMPUR, HAWAII  , 08-02-2022, N/A")
schedule = open("schedule.txt", "r")
print(schedule.read())

最初我的代码是

with open('schedule.txt') as new_schedule:
  contents = new_schedule.read()

old_data = str(input("Data to edit: "))
new_data = str(input("New data: "))
contents = contents.replace(old_data, new_data)

with open('schedule.txt', 'w') as file:
  schedule.write(contents)

但显然这段代码不起作用,因为 txt 文件中有重复的数据,例如“吉隆坡”该行的 1 个单词

标签: python

解决方案


我认为您可以使用enumerate读取索引和字符串行:

with open("schedule.txt") as fp:
    for i, line in enumerate(fp):
        if i == 1:
            print(line)

之后,用split(',')

temp = line.split(',')

然后用新的替换行的索引并使用

" , ".join(temp)

最后,用变量替换该行temp


推荐阅读