For循环中的python If语句,条件是执行else,仅当所有迭代

2024-10-04 05:32:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python的新手,我知道下面的代码有一些非常错误的地方。你知道吗

name = 'spider-man'
movies = []
movieframe = ['Spider-Man 3\xa0', 'The Amazing Spider-Man\xa0', 'Spider-Man 2\xa0', 'The Amazing Spider-Man 2\xa0', 'Spider-Man\xa0', 'Spider-Man: Homecoming\xa0']
for i in movieframe:
    if name.lower() == i.lower():
        movies.append(name)
        print('a', movies)

    else:
        movies.append(movieframe[0])
        print('b', movies)
        break

我想检查数据帧中是否存在确切的字符串,如果为真,则将其附加到另一个数据帧。但在上面的for循环中,“else”是在第一次迭代之后执行的。你知道吗

我该怎么纠正呢?你知道吗


Tags: the代码nameformovieslowerelsespider
3条回答

如果要附加到另一个数据帧,请首先初始化它,然后在循环中附加内容

示例:

movies = pd.DataFrame() ##### This will create a empty dataframe which can be appended into within the for loop.

或者,如果您的目的只是创建一个输出数据帧,那么可以像在代码中那样创建并附加到列表中。一旦跳出for循环,就用在循环中创建的列表创建一个dataframe

根据您的代码,应该是这样的:

movieDF = pd.DataFrame(movies) ##### movies is a list type

首先,您使用的是列表,而数据帧则完全不同。你知道吗

现在,为什么要使用\xa0?你知道吗

\xa0实际上是拉丁文1中的不间断空格,请使用u''或将其从movieframe中删除。你知道吗

或者您可以简单地使用name='spiderman\xa0'。你知道吗

您得到了错误的答案,因为\xa0name中不存在的附加字符。你知道吗

name = 'spider-man\xa0'
movies = [] 
movieframe = ['Spider-Man 3\xa0', 'The Amazing Spider-Man\xa0', 'Spider-Man 
2\xa0', 'The Amazing Spider-Man 2\xa0', 'Spider-Man\xa0', 'Spider-Man: 
Homecoming\xa0']
for i in movieframe:
    if name.lower() == i.lower():
       movies.append(name)
       print('a', movies)
if len(movies)==0:
   movies.append(movieframe[0])
   print('b', movies)

可以使用正则表达式:

name = 'spider-man'
movies = []
movieframe = ['Spider-Man 3\xa0', 'The Amazing Spider-Man\xa0', 'Spider-Man 2\xa0', 'The Amazing Spider-Man 2\xa0', 'Spider-Man\xa0', 'Spider-Man: Homecoming\xa0']
import re
movieframe = [x.lower() for x in movieframe]
for x in movieframe:
    if re.search("spider-man",x):
        movies.append(x)
print(movies)

['spider-man 3\xa0','the amazing spider-man\xa0','spider-man 2\xa0','the amazing spider-man 2\xa0','spider-man\xa0','spider-man:homecomming\xa0']

相关问题 更多 >