在Python中,我试图创建一个登录页面,从Google表单中提取存储的数据,以便在Streamlit Authenticator中使用.Streamlight Authenticator通过访问包含用户名、密码和屏幕名的列表容器来验证登录,如下所示:

username = ['johndoe', 'janedoe']
password = ['123', '456']
names = ['John Doe', 'Jane Doe']

我正在开发的应用程序运行在云上,我将用户数据存储在一个谷歌表格中, struct 如下:

username, password, names
johndoe, 123, John Doe
janedoe, 456, Jane Doe

使用pysheetsget_as_df操作,我试图提取数据来填充Streamlight Authenticator的容器.然而,当我使用pysheets拉一个列表时,各个单元格会作为单独的列表返回,如本例中的username列:

import pygsheets
import pandas as pd

gc = pygsheets.authorize(service_file=local_file) #for Google Sheets API authentication 

sh = gc.open('users') # Google Sheet name
wks = sh0[0] # Worksheet number
database_length = wks0.get_all_values(include_tailing_empty_rows=False, include_tailing_empty=False, returnas='matrix') # for finding the number of filled rows in sheet
end_row = str(len(database_length))
usernames_grab = wks0.get_as_df(has_header=False, index_column=0, start='A2', end=('A'+end_row0), numerize=False) # grabs cell data as dataframe
usernames_list = usernames_grab.values.tolist() # converts dataframe to list
print(usernames_list)

返回:

[['johndoe'], ['janedoe']]

然后,我try 相应地设置Streamlight验证器:

username = usernames_list
passwords = password_list
names - names_list

但是当加载脚本时,我收到以下错误:AttributeError: 'list' object has no attribute 'encode'我猜我不能以这种方式传递列表列表?对如何进行有什么建议吗?

推荐答案

这是因为你的username是一个列表列表,而不是字符串列表.

您只需从内部列表中提取字符串.

>>> username = [lst[0] for lst in usernames_list]
['johndoe', 'janedoe']

如果您的usernames_grab数据帧有列名,您还可以执行以下操作:

username = usernames_grab["username"].to_list()

Python相关问答推荐

Python:如何定义类型注释,以便生成的对象具有同名的属性和键?

将数组操作转化为纯numpy方法

try 使用tensorFlow.keras.models时optree Import错误

保留包含pandas pandras中文本的列

将列表中的元素替换为收件箱中的元素

Docker-compose:为不同项目创建相同的容器

Plotly:如何更改Heatmap中彩色条的勾选文本

如何使用PyTest根据self 模拟具有副作用的属性

使用argsorted索引子集索引数组

Python主进程和分支进程如何共享gc信息?

有什么方法可以避免使用许多if陈述

计算所有前面行(当前行)中列的值

剧作家Python没有得到回应

Python:在类对象内的字典中更改所有键的索引,而不是仅更改一个键

根据条件将新值添加到下面的行或下面新创建的行中

SQLGory-file包FilField不允许提供自定义文件名,自动将文件保存为未命名

Julia CSV for Python中的等效性Pandas index_col参数

我们可以为Flask模型中的id字段主键设置默认uuid吗

如何使用scipy的curve_fit与约束,其中拟合的曲线总是在观测值之下?

如何根据一列的值有条件地 Select 前N组?