Как поместить данные из листа Excel в ссылку API с несколькими параметрами и загрузить PDF, используя Python? - PullRequest
0 голосов
/ 17 марта 2020

Я работаю над программой создания сертификатов в Python. Для этого мне нужно взять имя, школу и номер рулона из файла Excel и поместить его в последнюю из ссылки API, которая относится к Google Docs (я создал структуру сертификата в Google Docs). Имен слишком много, поэтому я использовал для l oop. Ссылка API при открытии в браузере даст мне ссылку, которая, если я открою, загрузит PDF сертификата с соответствующим именем студента.

Я пытался, но не могу найти способ добавить имена и сверните номер до конца URL-адреса, чтобы его можно было открыть. Кроме того, в именах между ними есть пробелы, поэтому я должен сначала сделать имена подходящими для URL. Как добавить эти параметры в URL вместе с помощью l oop, чтобы у меня была куча URL с параметрами из таблицы Excel?

    import pandas as pd
import requests

df = pd.read_excel (r'D:\SciQuest_2020.xlsx')
print (df)

SchDict = {'B01':"DAV Public School Chandrasekharpur",'B02':"DAV Public School Pokhariput",'B05':"ODM Public School",'C01':"Delhi Public School Kalinga",'C02':"St. Joseph's Girls' High School",'C03':"Steward School Cuttack",'K01': "Kendriya Vidyalaya Khurda Road",'K02': "Carmel English Medium School",'K03': "Oneness International School",'K04': "DAV Public School, Khordha"}

url = "https://script.google.com/macros/s/AKfycbzYpmxFCPbRp2Wmh_neHunDOUzbh1ji5TkLmHk1GA/exec?data="
datas = []
for i in range(1,4):
    Name = df.iloc[i]["Name"]
    Class = df.iloc[i]["STD"]
    Roll_No = df.iloc[i]["RollNo"]
    Schul = SchDict[Roll_No[0:3]]
    Name.replace(" ","%20")
    newlink = "".join((url, Name, Roll_No, Schul))

1 Ответ

0 голосов
/ 17 марта 2020

Вы должны кодировать все параметры, а не только Имя, например, одинарная кавычка в Джозефе должна быть% 27.

import pandas as pd
import requests
import urllib

df = pd.read_excel("C:/tmp/certs.xlsx")# (r'D:\SciQuest_2020.xlsx')

SchDict = {
    'B01':"DAV Public School Chandrasekharpur",
    'B02':"DAV Public School Pokhariput",
    'B05':"ODM Public School",
    'C01':"Delhi Public School Kalinga",
    'C02':"St. Joseph's Girls' High School",
    'C03':"Steward School Cuttack",
    'K01': "Kendriya Vidyalaya Khurda Road",
    'K02': "Carmel English Medium School",
    'K03': "Oneness International School",
    'K04': "DAV Public School, Khordha"
}
# create log file
f = open("debug.txt", "w")

url = "https://script.google.com/macros/s/" + \
      "AKfycbzYpmxFCPbRp2Wmh_neHunDOUzbh1ji5TkLmHk1GA/exec?data="

for i in range(0,10):
    Name = df.iloc[i]["Name"]
    Class = df.iloc[i]["STD"]
    RollNo = df.iloc[i]["RollNo"]
    Schul = SchDict[RollNo[0:3]]
    param = urllib.parse.quote( ''.join((Name, RollNo, Schul)) )
    uri = url + param
    f.write("row {} | {} | {} |\n".format(i,Name,param))

f.close()
print("results written to debug.txt")


...