Python:在excel文件中查找特定的单词或值

时间:2017-03-15 12:29:50

标签: python excel openpyxl

所以我得到了两个excel文件,就像这个例子一样

movieId   title                 genres
1       Toy Story (1995)        Adventure|Animation|Children|Comedy|Fantasy
2       Jumanji   (1995)        Adventure|Children|Fantasy
3       Grumpier Old Men (1995) Comedy|Romance
4       Waiting to Exhale (1995)    Comedy|Drama|Romance
5       Father of the Bride Part II (1995)  Comedy
我试图制作的是当有人输入标题时,代码会找到movieID和电影名称。唯一的问题是我不知道从哪里开始我和我一起努力学习但是我不知道,如果你们能帮助我并指出我正确的方向会很棒。

谢谢

2 个答案:

答案 0 :(得分:1)

好的,既然你是 noob 编码器,我会以一种实际上并不需要任何库的简单方式向你解释。此外,我将假设您正在使用电影标题并可互换地移动名称。

首先,您可以将excel文件转换为.csv,它代表逗号分隔文件(通过excel,只需另存为,选择csv。您也可以通过Google工作表进行处理)。什么是csv文件?它就像excel文件,除了每行都在一行上,不同的列用逗号分隔。所以csv中的前三行是:

movieId,title,genres
1,Toy Story (1995),Adventure|Animation|Children|Comedy|Fantasy
2,Jumanji   (1995),Adventure|Children|Fantasy

现在,.csv可以作为常规文件读取。你应该逐行阅读它们。 Here是python doc。这很直接。

既然您已将每一行都作为字符串,我们可以通过string.split()命令将它们拆分。我们需要使用逗号作为分隔符进行拆分,因为它是逗号分隔文件。到目前为止,我们的代码是这样的(我假设您将csv的不同行读入lines数组):

lines = [...] # a list of strings which are the different lines of the csv
name_im_looking_for = "move you like" # the movie you're looking for
for(l in lines):
    columns = l.split(',')
    id = columns[0]
    name = columns[1]
    if(name.find(name_im_looking_for) != -1): 
        # this means the name you're looking for is within the 'name' col
        print "id is", id, "and full name is", name

这只是一种粗暴的方式,但如果你真的是编程新手应该帮助你顺利完成!如果您有任何问题,请随时询问(如果您真的很好并且您只想知道如何使用openpyxl,请在您的问题中注明)。

答案 1 :(得分:1)

以下是您在openpyxl中执行此操作的方法,因为您在问题中包含了openpyxl标记:

d = np.arange(1,20,0.5)
e = np.random.uniform(0,1,np.shape(d)[1])
tallmat = np.column_stack((d,e))

输出:

import openpyxl as xl

workbook = xl.load_workbook(filename="test.xlsx")

title_column_name = "title"

# Get the active worksheet
ws = workbook.active

# The String we'll search for. You could prompt the user to provide
# this using python2's raw_input, oder python3's input function.
searchstring = "Grumpier"

# ws.rows[1:] means we'll skip the first row (the header row).
for row in ws.rows[1:]:
    # row[1] is the title column. string.find(str) returns -1
    # if the value was not found, or the index in the string if
    # the value was found.
    if row[1].value.find(searchstring) != -1:
        print("Found a matching row! MovieId={0}, Title={1}".format(row[0].value, row[1].value))