小编jon*_*jon的帖子

装饰十六进制功能以填充零

我写了这个简单的函数:

def padded_hex(i, l):
    given_int = i
    given_len = l

    hex_result = hex(given_int)[2:] # remove '0x' from beginning of str
    num_hex_chars = len(hex_result)
    extra_zeros = '0' * (given_len - num_hex_chars) # may not get used..

    return ('0x' + hex_result if num_hex_chars == given_len else
            '?' * given_len if num_hex_chars > given_len else
            '0x' + extra_zeros + hex_result if num_hex_chars < given_len else
            None)
Run Code Online (Sandbox Code Playgroud)

例子:

padded_hex(42,4) # result '0x002a'
hex(15) # result '0xf'
padded_hex(15,1) # result '0xf'
Run Code Online (Sandbox Code Playgroud)

虽然这对我来说足够清楚并且适合我的用例(一个简单的打印机简单的测试工具),我不禁想到有很大的改进空间,这可以被压缩到非常简洁的东西.

还有哪些方法可以解决这个问题?

python hex padding built-in

54
推荐指数
6
解决办法
6万
查看次数

在ffmpeg中添加静音

我正在尝试使用ffmpeg将静音音轨添加到MOV文件中.

我创建了一个比视频更长的静音音轨,并打算在ffmpeg中使用-shortest选项.

使用SoX v14.3.1,我运行它来生成一个wav文件:

sox -n -r 44100 -b 16 -c 2 -L silence.wav trim 0.0 60.000

# -n  = Sox's null file
# -r = sample rate 
# -b = bits per sample
# -c = num of channels
# -L = little endian
# filename
# trim - is an effect, args start and length.
Run Code Online (Sandbox Code Playgroud)

我的基本ffmpeg命令如下所示:

ffmpeg -shortest \
-i silence.wav -acodec pcm_s16le \
-i vid_no_sound.mov -vcodec copy vid_with_sound.mov
Run Code Online (Sandbox Code Playgroud)

结果是:

ffmpeg version 0.11.1 Copyright (c) 2000-2012 the FFmpeg …
Run Code Online (Sandbox Code Playgroud)

ffmpeg

38
推荐指数
4
解决办法
5万
查看次数

从pylint中理解"太多的祖先"

example.py:

'''
demo too many ancestors 
'''
from flask_security.forms import RegisterForm
from wtforms.fields import TextField

class ExtendedRegisterForm(RegisterForm):
    '''An extended register form'''
    name = TextField('Name', [])
Run Code Online (Sandbox Code Playgroud)

当我运行pylint时:

$ pylint -r n example.py
************* Module example
R:  7, 0: Too many ancestors (10/7) (too-many-ancestors)
Run Code Online (Sandbox Code Playgroud)

这是什么意思,我该如何解决?

python pylint

21
推荐指数
3
解决办法
8520
查看次数

BeautifulSoup,HTML表格中的字典

我试图从网站上刮取表格数据.

这是一个简单的示例表:

t = '<html><table>' +\
    '<tr><td class="label"> a </td> <td> 1 </td></tr>' +\
    '<tr><td class="label"> b </td> <td> 2 </td></tr>' +\
    '<tr><td class="label"> c </td> <td> 3 </td></tr>' +\
    '<tr><td class="label"> d </td> <td> 4 </td></tr>' +\
    '</table></html>'
Run Code Online (Sandbox Code Playgroud)

期望的解析结果是 {' a ': ' 1 ', ' b ': ' 2 ', ' c ': ' 3 ', ' d ' : ' 4' }


这是我迄今为止最接近的尝试:

for tr in s.findAll('tr'):
  k, v = BeautifulSoup(str(tr)).findAll('td')
  d[str(k)] = str(v)
Run Code Online (Sandbox Code Playgroud)

结果是:

{'<td class="label"> …
Run Code Online (Sandbox Code Playgroud)

python beautifulsoup

13
推荐指数
4
解决办法
2万
查看次数

花括号后的括号是什么意思?

我看到Javascript代码在函数关闭大括号后立即使用括号,我无法理解它们用于什么.

例:

function foo(bar){
  return bar;
}(0);
Run Code Online (Sandbox Code Playgroud)
  • 怎么(0)办?

  • 这个叫什么?

  • 你应该什么时候使用这种技术?

javascript

11
推荐指数
2
解决办法
1754
查看次数

什么"如果<b <c然后"实际上在vb.net中做了什么?

这是一些"坏"代码:

Module test
    Sub Main()
        Console.WriteLine("1<2 =   " + cstr((1<2)))
        Console.WriteLine("2<1 =   " + cstr((2<1)))
        Console.WriteLine("1<2<3 = " + cstr((1<2<3)))
        Console.WriteLine("3<2<1 = " + cstr((3<2<1)))
    End Sub
End Module
Run Code Online (Sandbox Code Playgroud)

这个输出是:

1<2 =   True
2<1 =   False
1<2<3 = True
3<2<1 = True
Run Code Online (Sandbox Code Playgroud)

1<2<3 是正确的,但不是正确的理由.

3<2<1评估为True.为什么?

有人能解释一下这里发生了什么吗?

我知道我应该使用a<b and b<c但我想知道当你使用连续运算符时会发生什么.即,为什么编译器不哭!像这样的语法用于别的东西吗?

vb.net syntax operators

2
推荐指数
1
解决办法
1222
查看次数

如何打印只要用户输入它的水平线

如果我想创建一个由用户决定的水平星号,我该怎么做?例如,我想打印一行显示
01:...........(自定义编号)
02:........(自定义编号)
03:...... (自定义编号)
等...
在这种情况下,我从一个文件中获取销售数字并打印一些星号,这些星号代表公司在任何一天的收入数百.万一改变什么.

对不起,编辑:这是在python中

python string

1
推荐指数
2
解决办法
1万
查看次数

忘记申报变量

如果在循环内部,是否可以在循环的后续迭代期间实例化要操作的对象,并且在循环的范围被保留时仍然可用?

这是我认为可行的一个简单示例:

>>> for i in range(2):
...   r = [] if r is None else r
...   r.append[i]
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
NameError: name 'r' is not defined
Run Code Online (Sandbox Code Playgroud)

这是我第二次尝试使用NameError异常:

>>> for i in range(2):
...   try:
...     r = r
...   except NameError:
...     r = []
...   r.append(i)
...
>>>
Run Code Online (Sandbox Code Playgroud)

我怀疑我一直试图做的事实上是禁止的,但我不明白为什么会这样.

有人可以为我点上这些吗?

编辑:

所以第二种方式有效,但它很长.有快速的方法吗?

python interpreter

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