我理解为什么tuple
包含可变对象的list
内容不可清除,因为list
元组中的项仍然可以更新.
例:
# hashable
tuple_test = (1,2,3)
print(tuple_test.__hash__())
Run Code Online (Sandbox Code Playgroud)
虽然这不是可以清洗的:
# Not hashable
tuple_test2 = (1,2, [1,2])
print(tuple_test2.__hash__())
Run Code Online (Sandbox Code Playgroud)
以上对我有意义.
但是,当我创建一个namedtuple
带有list
项目时,它仍然可以清洗:
# hashable
named_tuple = namedtuple("TestTuple", 'name age')
Run Code Online (Sandbox Code Playgroud)
当我添加一个list
:
# still hashable
named_tuple = namedtuple("TestTuple", ["name", "age"])
print(named_tuple(name="adam", age=20).__hash__())
Run Code Online (Sandbox Code Playgroud)
为什么元组和命名元组之间存在这种差异?
我目前使用的函数接受两个数字,并使用循环查找这些数字的最小公倍数,
def lcm(x, y):
"""This function takes two
integers and returns the L.C.M."""
# choose the greater number
if x > y:
greater = x
else:
greater = y
while(True):
if((greater % x == 0) and (greater % y == 0)):
lcm = greater
break
greater += 1
return lcm
Run Code Online (Sandbox Code Playgroud)
python是否有内置模块可以代替编写自定义函数呢?
我是第一次学习测试驱动开发。我没有软件开发经验,但有一些脚本编写经验。
\n\n我一直在关注 LinuxAcademy Python 3 for Sys Admin 教程。
\n\n我创建了以下结构,
\n\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Makefile\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Pipfile\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Pipfile.lock\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.rst\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 setup.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 pgbackup\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 cli.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 __init__.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tests\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 test_cli.py\n
Run Code Online (Sandbox Code Playgroud)\n\nsetup.py
文件,
from setuptools import setup, find_packages\n with open(\'README.rst\', \'r\') as f:\n readme = f.read()\n setup(\n name=\'pgbackup\',\n version=\'0.1.0\',\n description=\'Database backups locally or to AWS S3.\',\n long_description=readme,\n author=\'Keith Thompson\',\n author_email=\'keith@linuxacademy.com\',\n packages=find_packages(\'src\'),\n package_dir={\'\': \'src\'},\n )\n
Run Code Online (Sandbox Code Playgroud)\n\nMakefile
文件,
.PHONY: install test\n\ndefault: test\n\ninstall:\n pipenv install --dev --skip-lock\n\ntest:\n PYTHONPATH=./src pytest\n
Run Code Online (Sandbox Code Playgroud)\n\ntests/test_cli.py …
我在状态文件中注释掉 jinja 代码时遇到问题,我在 sls 文件中有一个 for 循环
{% for user_name in salt['pillar.get']('userlist') %}
get_user:
- Some code here
....
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
我用 注释掉它#
,但是当我在小兵中执行状态时,循环仍在运行。
# {% for user_name in salt['pillar.get']('userlist') %}
get_user:
- Some code here
....
# {% endfor %}
Run Code Online (Sandbox Code Playgroud)
我缺少什么?
我有一个这种格式的字符串,
d = {'details': {'hawk_branch': {'tandem': ['4210bnd72']}, 'uclif_branch': {'tandem': ['e2nc712nma89', '23s24212', '12338cm82']}}}
Run Code Online (Sandbox Code Playgroud)
我想以这种格式将它写入文件,将列表转换为字典并value
为列表中的每个值添加单词作为键,所以{'tandem': ['4210bnd72']}
应该成为
"tandem": {
"value": "4210bnd72"
}
Run Code Online (Sandbox Code Playgroud)
这是预期的输出文件,
{
"details": {
"hawk_branch": {
"tandem": {
"value": "4210bnd72"
}
},
"uclif_branch": {
"tandem": {
"value": "e2nc712nma89",
"value": "23s24212",
"value": "12338cm82",
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里问了一个问题,有人回答使用json.JSONEncoder
,
class restore_value(json.JSONEncoder):
def encode(self, o):
if isinstance(o, dict):
return '{%s}' % ', '.join(': '.join((json.encoder.py_encode_basestring(k), self.encode(v))) for k, v in o.items())
if isinstance(o, list):
return '{%s}' % …
Run Code Online (Sandbox Code Playgroud) 我正在运行一个生成这样的证书请求的命令,
some text
some text
certificate is -----BEGIN CERTIFICATE REQUEST-----
MIIEiDCCAnACAQAwGDEWMBQGA1UEAxMNdGVzdHZhdWx0LmNvbTCCAiIwDQYJKoZI
hvcNAQEBBQADggIPADCCAgoCggIBALoGVu7JqQ/60rEZhP2AvRRxf0p9PcQLB8KU
yy/39m2FX5gwPbjzdmenCYzTRV/CHFh3FnK+x+UwCBkAHIBRJfyl5V/V2sdqh0Tm
YEAPQVIoWcH/P7Q8FSxdnBXepnZak33PHt6We76TdxlmJ+OSLPT4XzKX7gTPGSxW
L0tEuzLxkMieigx8TFtLGpe5CWshOe/oiUHR6g9Ehf6s4vIvT7quSGYJWgfD7PI0
+QfuOhg2ldlNKnDm+chkHFYO2rVS+42zhuGk8C/wIElgrsICl1Xpzna2ZmkuscF9
Gir2HVGPtkxB13CyK9jne8Pxr6jRwkGPny7x4czZfafz3sgVo2WmonmaXpXp8od4
aBs1b1VhJuegWo6j2r8TS9scG5o4GTxwCXNeFQnXB+tWDRV7MH6DW/gWEBV/e0QB
RKfhlPhEUd8bgzYwe8gi6ikIoY7RpyXMeV5iVwU3498+ok0v1JlF813Fdx/47nLe
AY/w3vrTJdioJ6y7h1H9GQGb1vpx9HaXsJEpSVxeeNygAJZpuWXOFBiGF2EpN0Uq
YllwAGHYe9ihKXCrRt8rgust+iE4uEw+ypRxNMTGiPxv+jkEwmd5SZODXoSh6OVb
y06bGIilBbITO5bG0bXJrOFOZzOP37oEwX/8+zNX8lEhPh4IlizwA83Rl08wkk2N
H8lL+hnBAgMBAAGgKzApBgkqhkiG9w0BCQ4xHDAaMBgGA1UdEQQRMA+CDXRlc3R2
YXVsdC5jb20wDQYJKoZIhvcNAQELBQADggIBAIwP3a80GQJJoyqO3CPPp8Kbpqtd
a11nmSLlw7U+0YRIElk1Z0oTaE1AURnEGcm2URFTMZYqHXDcMYhP4lcNp3kHSj/C
8UOT75rRDjWfkEpHdGdUOKUuLcJxjzWw0BiSsl7Bnz1aG+7qJ/iv2hYOmyDiR4g/
Tt+IIeShJpMxM63y47BzeLmQgugqyLKvgGsyeeQYCblXUBMla4geNhgBnZikGiIy
8MTvhh24CuBPi9DdGwDO8Wly4BKseBTSAAQrsbrkmSbTunSb/6ry83UDV20f2inv
+Y7UaYi6Ww07fX02oMoRY7d1M9hRDrpD5ZRP3huCDHIvLlY+tJdZL0YTHZM/wk+Z
kg44xXOEGNePoDI8RhOSOe6ixSRFt9stW+Mpe19R0UF4tA6YmNMyt43ILcljEHAh
b20SVTCbN9SICccdTjh3qxIXYK2HlRe99Tqo6NTt1xdE3AuJAjZZXDtfKqmqXMi+
HDeeQpYot3spjlklqEVZYqsWOvvWoGKnAjOLBHxD10IaqF4Epnt/OZKq01ZVIRp2
+I09tsiIpHYJCC4br0k6xwz8SUbpPUGiJ+j8N0rcd8I7xjToXtauQ9a9pAHmf0g8
8w5ZqhjSj6//xbFIhrK+SyO/R/W2s2XeUfcBmlyJFb/2zOKZ6CzbCgsjZ8xyfk13
ltjjnB1ecB0sWgpu
-----END CERTIFICATE REQUEST-----
Run Code Online (Sandbox Code Playgroud)
我想将证书自动保存到文件中,但不保存文本certificate is
或之前的任何行。
现在我正在使用command | grep -A100 "\-----BEGIN"
获取所有行并将其保存到文件中,但我只是使用100
行数,但证书不是100
行。如何获得包括和之后的确切行数-----BEGIN
以便我可以将证书写入文件?
编辑:我也刚刚尝试过这个,command | grep -A$(wc -l) "\-----BEGIN"
但它根本不打印任何内容
谢谢。
我有一个这种格式的文件名,
remote_execute___jenkin%.java
remtoe__plat_jenk.java
Run Code Online (Sandbox Code Playgroud)
我想_
用 single替换所有出现的两个或三个_
,
我已经这样做了,
re.sub('_{2,3}','_',name)
Run Code Online (Sandbox Code Playgroud)
这有效并将所有出现的两个或三个_
替换为 single _
。但在同一个re.sub
电话中,我需要替换.java
为.jav
,
我这样做是为了匹配.java
和underscores
,
\.java$|_{2,3}
Run Code Online (Sandbox Code Playgroud)
但是如何在替换后不使用另一个调用的情况下.java
在同一个re.sub
调用中进行re.sub
替换underscores
,
现在我就是这样做的,
name = re.sub('_{2,3}','_',name)
name = re.sub('\.java$','jav',name)
Run Code Online (Sandbox Code Playgroud)
我想在一次re.sub
通话中完成以上操作
我编写了以下代码来从 url 读取示例 JSON 数据,
HEADER = {"content-type": "application/josn"}
session = requests.Session()
session.verify = True
session.headers = HEADER
output = session.request("GET", "https://jsonplaceholder.typicode.com/todos/1", timeout=30)
Run Code Online (Sandbox Code Playgroud)
如果我打印output
我得到,
<Response [200]>
如果我做,
output = session.request("GET", "https://jsonplaceholder.typicode.com/todos/1", timeout=30).json()
Run Code Online (Sandbox Code Playgroud)
我得到实际json
内容,
{u'completed': False, u'userId': 1, u'id': 1, u'title': u'delectus aut autem'}
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,
output = session.request("GET", "https://jsonplaceholder.typicode.com/todos/1", timeout=30)
print(json.loads(output))
Run Code Online (Sandbox Code Playgroud)
我明白了,
File "/usr/lib64/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
TypeError: expected string or buffer
Run Code Online (Sandbox Code Playgroud)
有人可以给我举个例子,我应该什么时候使用.json()
,什么时候使用json.loads()
?
我正在努力尝试使用正则表达式完全匹配多个单词,
这是我的文字,
谷歌正在寻求拆除Spotify-Apple在音乐发行方面的"双头垄断",本周在第四次试图说服YouTube数十亿用户支付费用时,对其音乐服务进行了改革.
谷歌周二推出了一项新的音乐订阅服务,并将通过YouTube最昂贵的广告活动推广它.这项名为YouTube音乐的服务模仿了Spotify模式:将有一个免费的广告支持层,功能更加有限,每月10美元的订阅,没有广告和额外的功能.
我想匹配3个单词Spotify-Apple
,US10
并且extra functions
我希望其他一切都被忽略我试过了
\bSpotify-Apple\b(.|\n)*?\bUS10\b(.|\n)*extra functions
Run Code Online (Sandbox Code Playgroud)
它可以突出显示所有三个短语,但也突出显示它们之间的所有文本.我怎么能只匹配三个单词而忽略其他一切呢?我试着忽略它就像使用一样^
,
\bSpotify-Apple\b^(.|\n)*?\bUS10\b^(.|\n)*extra functions
Run Code Online (Sandbox Code Playgroud) python ×6
regex ×3
json ×2
awk ×1
grep ×1
javascript ×1
makefile ×1
namedtuple ×1
python-3.x ×1
salt-stack ×1
sed ×1
ubuntu ×1