使用 BeautifulSoup,如何访问<li>具有特定div子项的子项?
li示例:如何访问具有Email子 div的文本(即 info@blah.com) ?
<li>
<div>Country</div>
Germany
</li>
<li>
<div>Email</div>
info@blah.com
</li>
Run Code Online (Sandbox Code Playgroud)
我尝试手动执行此操作:在所有 上循环li,对于每个子项,在所有子项上重新循环div以检查文本是否为电子邮件等。但我确信存在一个更聪明的 BeautifulSoup 版本。
我想datetime在2015-11-02和2015-12-14之间找到所有星期二和星期三(作为对象).这有效:
from datetime import datetime, timedelta
l = []
for i in range(100):
d = datetime(2015,11,2) + timedelta(days=i)
if d > datetime(2015,12,14):
break
if d.weekday() == 1 or d.weekday() == 2: # tuesday or wednesday
l.append(d)
print l
Run Code Online (Sandbox Code Playgroud)
[datetime.datetime(2015,11,3,0,0),datetime.datetime(2015,11,4,0,0),datetime.datetime(2015,11,10,0,0),datetime.datetime( 2015,11,11,0,0),datetime.datetime(2015,11,17,0,0),datetime.datetime(2015,11,18,0,0),datetime.datetime(2015,11,24) ,0,0),datetime.datetime(2015,11,25,0,0),datetime.datetime(2015,12,1,0,0),datetime.datetime(2015,12,2,0,0) ,datetime.datetime(2015,12,8,0,0),datetime.datetime(2015,12,9,0,0)]
有更多的pythonic方式吗?
在进行STFT时,然后使用库Librosa对16位44.1 khz音频文件进行反向STFT(iSTFT):
import librosa
y, sr = librosa.load('test.wav', mono=False)
y1 = y[0,]
S = librosa.core.stft(y1)
z1 = librosa.core.istft(S, dtype=y1.dtype)
librosa.output.write_wav('test2.wav', z1, sr)
Run Code Online (Sandbox Code Playgroud)
输出只是一个22千赫兹的音频文件.为什么?librosa的采样率变化在哪里?
我正在尝试使用(此处可运行代码)生成具有 15 种不同颜色的彩虹:
size(360,100);
colorMode(HSB, 360, 100, 100); // Hue in degrees in [0, 360],
// saturation/brightness in [0, 100]
// like in Photoshop
noStroke();
for (int i = 0; i < 15; i++)
{
fill(i*24, 100, 100); // 24*15 = 360
rect(i*24, 0, 25, 100);
}
Run Code Online (Sandbox Code Playgroud)
但它不会产生丰富的 15 种彩虹调色板,而是缺少一些颜色(例如鲜艳的黄色)。
是否有一种众所周知的算法可以产生生动的彩虹调色板?
这适用于在 PDF 文件中写入文本reportlab:
from reportlab.pdfgen import canvas
from reportlab.lib.units import cm
c = canvas.Canvas("test.pdf")
c.drawString(1 * cm, 29.7 * cm - 1 * cm, "Hello")
c.save()
Run Code Online (Sandbox Code Playgroud)
但是在处理多行文本时,不得不处理x, y每一行的坐标是很不愉快的:
text = "Hello\nThis is a multiline text\nHere we have to handle line height manually\nAnd check that every line uses not more than pagewidth"
c = canvas.Canvas("test.pdf")
for i, line in enumerate(text.splitlines()):
c.drawString(1 * cm, 29.7 * cm - 1 * cm - i * cm, line)
c.save()
Run Code Online (Sandbox Code Playgroud)
有没有更聪明的方法来做到这一点 …
将彩色JPG图像转换为灰度并将其保存回JPG时,通常可以看到文件大小至少减少了20%,这似乎很自然。
题:
JPG规范中是否有特定的“灰度”格式?我以JPEG文件交换格式看到了这一点,但不确定是否是当今使用的标准
还是“灰度JPG”通常只是其中的RGB彩色JPG R value==G value==B value,因此文件大小的减小是由3倍重复数字的压缩引起的?
在我看来,它是2。因为在各种语言中,JPG导出功能都没有灰度选项,例如toDataURL在Javascript中:
var fullQuality = canvas.toDataURL('image/jpeg', 1.0);
var mediumQuality = canvas.toDataURL('image/jpeg', 0.5);
var lowQuality = canvas.toDataURL('image/jpeg', 0.1);
Run Code Online (Sandbox Code Playgroud) 我知道如何在每个纪元后保存模型:
savemodel = ModelCheckpoint(filepath='models/model_{epoch:02d}-{loss:.2f}.h5')
model.fit(X, Y, batch_size=4, epochs=32, verbose=1, callbacks=[savemodel])
Run Code Online (Sandbox Code Playgroud)
如何使用自定义回调函数来记录某些信息:
def write_metrics():
with open('log.txt', 'a') as f: # append to the log file
f.write('{epoch:02d}: loss = {loss:.1f}')
model.fit(X, Y, batch_size=4, epochs=32, verbose=1, callbacks=[savemodel, write_metrics])
Run Code Online (Sandbox Code Playgroud)
?
使用此代码将无法工作,因为{loss}和{epoch}未在 中定义f.write('{epoch:02d}: loss = {loss:.1f}')。
在这里,我们s在循环时修改字符串:
s = 'hello'
for c in s:
s += c
print(s)
Run Code Online (Sandbox Code Playgroud)
它不会产生无限循环(它可以:我们在每次迭代中添加一个新字符!)。
多年来我就知道这一点,但我无法真正解释原因。这与字符串不变性有关还是无关?
执行时for c in s:,是否s在开始循环之前将原件复制到内存中?
我认为可能会产生无限循环的另一种情况,但它不会:
s = 'hello'
def f(x):
i = 0
while True:
try:
yield x[i]
except IndexError:
break
i += 1
for c in f(s):
s += c
print(s)
Run Code Online (Sandbox Code Playgroud) 假设我们有以下 XML 文件:
from lxml import etree
root = etree.fromstring("""
<a>
<b>
<c>Hello</c>
<d>1234</d>
</b>
<b>
<c>Bonjour</c>
<d>5678</d>
</b>
</a>
""")
Run Code Online (Sandbox Code Playgroud)
怎么可能用类似 SQL 的查询语言更新 XML?
示例(伪代码):
etree.query("""UPDATE a.b SET c.text = 'foo' WHERE d.text = '5678'""")
Run Code Online (Sandbox Code Playgroud)
甚至更复杂的链式查询,例如:
UPDATE a.b SET c.text = (SELECT ... FROM ... WHERE ...) WHERE d.text = '5678'
Run Code Online (Sandbox Code Playgroud)
目标是能够使用类似 SQL 的语法仅用一两行代码来修改复杂的 XML 文档。旁注:作为对比,用人工做这个lxml,find等作品,但要长得多。
ImageFont.truetype需要一个文件名才能工作,例如:
font = ImageFont.truetype("ariblk.ttf") # Arial Black
Run Code Online (Sandbox Code Playgroud)
有没有办法使用PIL, 按名称而不是文件名加载字体?
上下文:我想加载一种粗体(粗重)无衬线字体,该字体可以在任何平台 Windows、Linux、Mac 上使用。
我不认为ImageFont.truetype("ariblk.ttf")可以跨平台工作,是否可以加载它ImageFont.truetype("Arial Black"),或者更好的是,ImageFont.truetype("sans-serif;bold")可以在所有平台上工作?