【发布时间】:2020-09-21 11:36:42
【问题描述】:
我正在创建一个 csv 文件来迭代它并使用 Python 发送电子邮件。 代码对我有用,但我认为我编写太多代码只是为了从 Google SpreadSheet 获取数据、跳过一些行并对其进行迭代。
这是我的代码:
import csv
import pandas as pd
import smtplib
from settings_djg import SENDER_EMAIL, SENDER_PASS # Email settings file
from datetime import date, datetime
import gspread
from oauth2client.service_account import ServiceAccountCredentials
from email.message import EmailMessage
from itertools import islice
scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive']
creds = ServiceAccountCredentials.from_json_keyfile_name('client_secret.json', scope)
client = gspread.authorize(creds)
sheet = client.open("Hosting_Domains").sheet1
list_of_hashes = sheet.get_all_values()
new_list = pd.DataFrame(list_of_hashes)
# Here I'm using .iloc to skip some rows
new_list.iloc[[0,2,3,4,5,6,7,13,14,15,16,17,18,19,20]].to_csv('my_csv.csv', index=False, header=False)
msg = EmailMessage()
now = date.today()
# Here starts iteration
with open('my_csv.csv') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
next(csv_reader)
for row in csv_reader:
来自 Google 电子表格的数据如下:
X,DOMAIN,EXPIRE,OWNER,REGISTRANT,HOSTING
,,,CUSTOMERS,,,
B,company.com,2021-02-13,Customer,SITEGROUND,SITEGROUND
D,companyb.com,2021-05-17,Customer,GODDADY,GODDADY
E,companyc.com,2021-09-19,Customer,GODDADY,GODDADY
D,companye.com,2021-01-23,Customer,GODDADY,GODDADY
【问题讨论】:
-
我可以问你关于你的问题吗? 1.您目前的问题是什么? 2. 你的预期结果是什么?
-
我期待:在没有“列表列表”的情况下更轻松地从我的 Google 电子表格转到我的 csv 文件,也无需使用 .iloc 从原始文件中跳过一些行。
-
感谢您的回复。不幸的是,我仍然无法理解您的目标。我为此道歉。比如,当你的样本值
Data from Google SpreadSheet is like this:被使用时,我能问一下你期望的结果吗? -
抱歉,现在从我的电子表格中跳过行 [1] 我正在使用 .iloc。问:有没有更简单的方法?还是使用“.iloc”是一个不错的选择?感谢您的时间和耐心。
-
感谢您的回复。您的目标是通过使用 gspread 和 python 选择行,将 Google 电子表格中的值作为 CSV 数据检索。我的理解正确吗?
标签: python pandas csv google-sheets-api gspread