简体   繁体   English

如何从列表中删除方括号? 通过使用条带 function

[英]How do I remove the square brackets from the list? By using the strip function

 calendar = []

f = open("calendar.txt","w")

while True:
    choice = input ("enter a,b,c,d or e")
    if choice == "e":
        print ("you have quitted this program")
        break #to quit the entire program
    if choice == "a":
        newevent = input ("enter the name of an event you want to add")
        calendar.append ([newevent]) 
        y= int(input("enter the year of your event"))
        m = int(input("enter the month of your event"))
        d = int(input("enter the day of your event"))
        h = int(input("enter the hour of your event"))
        mi = int(input("enter the minute of your event"))
        date = (y,m,d,h,mi)

    for i in range (0,len(calendar)):
        f = open("calendar.txt","r")
        st = f.readlines()
    
    for y in range (0,len(st)):
        st[y] = st[y].strip("\n")
        st[y]= st[y].split(",")
        st[y][1]=int(st[y][1])
        f.close()

    for x in range (0,len(calendar)):
        if calendar[x][0]== newevent:
            calendar[x].append (date)
            print (calendar)

this is my output:这是我的 output:

enter a,b,c,d or ea
enter the name of an event you want to addswim
enter the year of your event2020
enter the month of your event2
enter the day of your event2
enter the hour of your event2
enter the minute of your event2
[['swim', (2020, 2, 2, 2, 2)]]
enter a,b,c,d or e

how do I remove the square brackets around it?如何删除它周围的方括号?

print(",".join(list))

or或者

print(str(list)[1:-1])

You just have a list inside a list.您只有一个列表内的列表。 which is normal since a calendar can be shown as a list of events, each one composed of one name, and one date, that can be stored as a list.这是正常的,因为日历可以显示为事件列表,每个事件由一个名称和一个日期组成,可以存储为列表。

To print the last event you added to your calendar, you can use print(calendar[-1]) .要打印您添加到日历中的最后一个事件,您可以使用print(calendar[-1])

They are some problems in your program:它们是您程序中的一些问题:

  • At the very begining, you open your calendar in write mode as f , then you re-open it in read mode, as f too, whithout calling close() on it.一开始,您以f的形式以写入模式打开日历,然后以f的形式以读取模式重新打开它,而无需对其调用close()
  • When you open the file in read mode, you do it in a for loop, and re-assign the same variable each time.当您以读取模式打开文件时,您会在 for 循环中执行此操作,并且每次都重新分配相同的变量。 This is useless.这是没用的。

To make your program simpler:为了使您的程序更简单:

  • Don't open the file at the begining.不要一开始就打开文件。
  • When the user enters the name of the event, store it in a list with the date before inserting it in the calendar, so you don't have to parse all the calendar to add the date.当用户输入事件的名称时,将其存储在包含日期的列表中,然后再将其插入日历中,这样您就不必解析所有日历来添加日期。

Here is a refactored version of your program:这是您的程序的重构版本:

while True:
    choice = input("Enter Q to quit, A to add a new event : ").upper()
    if choice == 'Q':
        print ("You have quitted this program")
        break #to quit the entire program
    elif choice == 'A':
        name = input ("Enter the name of an event you want to add : ")
        y= int(input("Enter the year of your event: "))
        m = int(input("Enter the month of your event: "))
        d = int(input("Enter the day of your event: "))
        h = int(input("Enter the hour of your event: "))
        mi = int(input("Enter the minute of your event: "))
        date = (y,m,d,h,mi)
        
        # Opening the file in append mode
        f = open("calendar.txt", 'a', encoding='utf-8')
        f.write('{},{},{},{},{},{}\n'.format(name, date[0], date[1], date[2], date[3], date[4]))
        f.close()
        
    print("------ ALL YOUR EVENTS ------")
    # Showing the entire calendar
    f = open("calendar.txt","r")

    for event in f.readlines():
        split = event.split(',')
        print("{} happens on {}/{}/{} at {}:{}".format(split[0],
                                                       int(split[1]),
                                                       int(split[2]),
                                                       int(split[3]),
                                                       int(split[4]),
                                                       int(split[5])
                                                       ))
    print('-----------------------------')

And the output:和 output:

Enter Q to quit, A to add a new event : A
Enter the name of an event you want to add : Christmass
Enter the year of your event: 2020
Enter the month of your event: 12
Enter the day of your event: 25
Enter the hour of your event: 0
Enter the minute of your event: 0
Christmass,(2020, 12, 25, 0, 0)
My birthday,(1997, 1, 1, 6, 45)


C:\Users\tcravic\Downloads>python test.py

C:\Users\tcravic\Downloads>python test.py
Enter Q to quit, A to add a new event : A
Enter the name of an event you want to add : Christmass
Enter the year of your event: 2020
Enter the month of your event: 12
Enter the day of your event: 25
Enter the hour of your event: 0
Enter the minute of your event: 0
------ ALL YOUR EVENTS ------
Christmass happens on 2020/12/25 at 0:0
-----------------------------
Enter Q to quit, A to add a new event : A
Enter the name of an event you want to add : My Birthday
Enter the year of your event: 1997
Enter the month of your event: 03
Enter the day of your event: 01
Enter the hour of your event: 6
Enter the minute of your event: 45
------ ALL YOUR EVENTS ------
Christmass happens on 2020/12/25 at 0:0
My Birthday happens on 1997/3/1 at 6:45
-----------------------------
Enter Q to quit, A to add a new event : q
You have quitted this program

You can also read about CSV format and CSV parsing in python .您还可以在 python 中阅读有关CSV 格式CSV 解析的信息

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM