假设我有两个set():
a = {('1', '2', '3', 'a'), ('1', '2', '4', 'a'), ('1', '2', '5', 'b')}
b = {('1', '2', '3', 'b'), ('1', '2', '4', 'b'), ('1', '2', '6', 'b')}
Run Code Online (Sandbox Code Playgroud)
现在,我想要做的是找到集差b \ a但忽略每个元组中的最后一个元素。所以这就像做这样的事情:
a = {('1', '2', '3'), ('1', '2', '4'), ('1', '2', '5')}
b = {('1', '2', '3'), ('1', '2', '4'), ('1', '2', '6')}
In[1]: b - a
Out[1]: {('1', '2', '6')}
Run Code Online (Sandbox Code Playgroud)
预期输出:
b \ a = {('1', '2', '6', 'b')}
是否有任何明显的/pythonic 方法可以实现这一点,而无需手动迭代每个集合并检查每个集合tuple[:3]?
我试图从该网站获取所有数据,以便以后在某些模型训练项目(ML)中使用它。
我选择使用Scrapy + Python 3.7来做到这一点。到目前为止,一切都很好。我已经建立了Scrapy项目结构,并开始研究刮板。为此,我创建了一些步骤,必须遵循这些步骤才能相应地获取所需的数据。
Product从下面粘贴的代码中跳过该类)我试图通过使用以下代码来重现以上内容:
import json
import re
import scrapy
PRODUCTS_XPATH = "//div[@class='col-md-3']//a/@href"
class Product:
def __init__(self, response):
self.response = response
def get_brand_name(self):
brand_name = self.response.xpath(
"normalize-space(//*[@class='product-brand-name-details']/text())"
).extract()
if not brand_name[0]:
brand_name = self.response.xpath(
"normalize-space(//h3[@class='font-weight-bold']/text())"
).extract()
return brand_name[0] if brand_name else 'Could not get product brand name.'
def get_brand_name_details(self):
brand_name_details = self.response.xpath(
"normalize-space(//*[@class='product-name-details']/text())"
).extract()
if not brand_name_details[0]:
brand_name_details = self.response.xpath(
"normalize-space(//h1[@class='title …Run Code Online (Sandbox Code Playgroud) 我一直在尝试了解对称加密的工作原理以及如何将其集成到我的 CLI 应用程序中,但我遇到了一些我将在下面描述的问题。
我的用例如下:
我有一个CLI应用程序(SQLAlchemy+ click+ Python 3.8),这将是一个非常简单的密码管理器(自用)。
开始时,我想向用户询问主密码,以便他能够从数据库中检索任何信息。如果用户还没有主密码,我会请他创建一个。我希望所有数据都使用相同的主密钥进行加密。
为了完成上述所有工作,我认为对称加密是最合适的,因此想到了Fernet,所以我开始编写一些代码:
import base64
from cryptography.fernet import Fernet, InvalidToken
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
def generate_key_derivation(salt, master_password):
kdf = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=32,
salt=salt,
iterations=100000,
backend=default_backend()
)
key = base64.urlsafe_b64encode(kdf.derive(master_password.encode()))
return key
def encrypt(key, value_to_encrypt):
f = Fernet(key)
encrypted_key = f.encrypt(value_to_encrypt.encode())
return encrypted_key
def decrypt(key, encrypted_key):
f = Fernet(key)
try:
return f.decrypt(encrypted_key)
except InvalidToken:
return b''
Run Code Online (Sandbox Code Playgroud)
现在,我有点试图从文档中理解:
在这个方案中,盐必须存储在一个可检索的位置,以便将来从密码中导出相同的密钥。 …
我试图从这里开始遵循 Plaid 的文档,但我似乎无法弄清楚public_token当我在 Plaid开发环境中工作时从哪里获得。他们是这样说的:
在他们的第二个例子中:
from plaid import Client
client = Client(client_id='***', secret='***', public_key='***', environment='sandbox')
# the public token is received from Plaid Link
response = client.Item.public_token.exchange(public_token)
access_token = response['access_token']
Run Code Online (Sandbox Code Playgroud)
我不知道从哪里来的public_token。如果我去那个格子链接他们说:
此存储库现已弃用。要与 Plaid 集成,请访问文档。https://plaid.com/docs
然后,当我去他们的官方文档时,我似乎找不到任何方法来获得它public token。
我正在尝试按照以下方式做一些事情:
from exceptions import (
InvalidPlaidEnvironment,
MissingPlaidCredential
)
from plaid import Client
from plaid.errors import APIError, ItemError, InvalidRequestError
VALID_ENVIRONMENTS = (
'sandbox',
'development',
'production'
)
CLIENT_ID = '<development_client_id>'
SECRET …Run Code Online (Sandbox Code Playgroud) 如标题所示,以下代码为什么表现得如此奇怪?
a = {
0: 0
}
b = []
for i in a:
del a[i]
a[i + 1] = 0
b.append(i)
print(b)
Run Code Online (Sandbox Code Playgroud)
在Python3.6中它会打印[0, 1, 2, 3, 4],而在Python3.5中它会打印[0, 1, 2, 3, 4, 5, 6, 7]。为什么?
python ×4
python-3.x ×3
encryption ×1
plaid ×1
python-2.7 ×1
scrapy ×1
set ×1
sqlalchemy ×1
web-scraping ×1