我是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
我想检查数据帧中是否存在确切的字符串,如果为true,则将其附加到另一个数据帧。但是在上面的for循环中,'else'正在第一次迭代后执行。
如何更正?
答案 0 :(得分:2)
首先,您使用的是列表,而 Dataframe 则完全不同。
现在,你为什么要使用 \ xa0 ?
\ xa0 实际上是Latin1中的不间断空格,而是使用u''或从movieframe中删除它们。
或者只是您可以使用name='spiderman\xa0'
。
您的答案错误,因为 \ xa0 是name
中不存在的其他字符。
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)
答案 1 :(得分:0)
如果要附加到另一个数据帧,首先将其初始化,然后在循环中追加内容
示例:
movies = pd.DataFrame() ##### This will create a empty dataframe which can be appended into within the for loop.
或者,如果您的目的只是创建输出数据框,那么就像在代码中一样创建并附加到列表中。然后,一旦退出for循环,使用您在循环中创建的列表创建一个数据框
从您的代码中,它应该是:
movieDF = pd.DataFrame(movies) ##### movies is a list type
答案 2 :(得分:0)
你可以使用正则表达式:
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)
['蜘蛛侠3 \ xa0','惊人的蜘蛛侠\ xa0','蜘蛛侠2 \ xa0','惊人的蜘蛛侠2 \ xa0','蜘蛛侠\ xa0' ,'蜘蛛侠:回家\ xa0']