小编Bas*_*asj的帖子

使用 BeautifulSoup 查找具有特定子元素的元素

使用 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 版本。

python beautifulsoup html-parsing

6
推荐指数
1
解决办法
4893
查看次数

所有星期二和星期三都在一个日期范围内:是否有更多的pythonic方式?

我想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方式吗?

python time datetime

6
推荐指数
3
解决办法
557
查看次数

Librosa的采样率问题

在进行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的采样率变化在哪里?

python audio signal-processing librosa

6
推荐指数
1
解决办法
3064
查看次数

生成 n 色彩虹调色板

我正在尝试使用(此处可运行代码)生成具有 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 种彩虹调色板,而是缺少一些颜色(例如鲜艳的黄色)。

在此输入图像描述

是否有一种众所周知的算法可以产生生动的彩虹调色板?

processing rgb colors hsb color-palette

6
推荐指数
1
解决办法
5811
查看次数

使用 reportlab 在流程中编写多行文本

这适用于在 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)

有没有更聪明的方法来做到这一点 …

python pdf reportlab

6
推荐指数
1
解决办法
7697
查看次数

有灰度JPG格式吗?

将彩色JPG图像转换为灰度并将其保存回JPG时,通常可以看到文件大小至少减少了20%,这似乎很自然。

题:

  1. JPG规范中是否有特定的“灰度”格式?我以JPEG文件交换格式看到了这一点,但不确定是否是当今使用的标准

  2. 还是“灰度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)

javascript jpeg image

6
推荐指数
1
解决办法
2106
查看次数

每个纪元后的自定义回调以记录某些信息

我知道如何在每个纪元后保存模型

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}')

python machine-learning keras

6
推荐指数
1
解决办法
3771
查看次数

循环时修改字符串

在这里,我们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)

python string loops immutability

6
推荐指数
1
解决办法
236
查看次数

使用 SQL 查询更新 XML

假设我们有以下 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 文档。旁注:作为对比,用人工做这个lxmlfind等作品,但要长得多。

python xml sql

6
推荐指数
1
解决办法
223
查看次数

通过字体名称而不是文件名选择 PIL.ImageFont,以及跨平台字体

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")可以在所有平台上工作?

python fonts python-imaging-library

6
推荐指数
1
解决办法
3529
查看次数