小编Voj*_*lko的帖子

如何摆脱字典中的无值?

就像是:

for (a,b) in kwargs.iteritems():
    if not b : del kwargs[a]
Run Code Online (Sandbox Code Playgroud)

此代码引发异常,因为迭代时更改字典.

我发现另一个字典只有非常漂亮的解决方案:

res ={}
res.update((a,b) for a,b in kwargs.iteritems() if b is not None)
Run Code Online (Sandbox Code Playgroud)

谢谢

python

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

在Python中统一列表的最快方法

在不保留顺序的情况下在Python中统一列表的最快方法?我在互联网上看到了许多复杂的解决方案 - 它们能否比简单的更快:

list(set([a,b,c,a]))
Run Code Online (Sandbox Code Playgroud)

python performance list

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

使用lxml在python中编码 - 复杂的解决方案

我需要使用lxml下载并解析网页并构建UTF-8 xml输出.我认为伪代码模式更具说明性:

from lxml import etree

webfile = urllib2.urlopen(url)
root = etree.parse(webfile.read(), parser=etree.HTMLParser(recover=True))

txt = my_process_text(etree.tostring(root.xpath('/html/body'), encoding=utf8))


output = etree.Element("out")
output.text = txt

outputfile.write(etree.tostring(output, encoding=utf8))
Run Code Online (Sandbox Code Playgroud)

所以webfile可以是任何编码(lxml应该处理这个).Outputfile必须是utf-8.我不知道在哪里使用编码/编码.这个架构好吗?(我找不到关于lxml和编码的好教程,但我可以发现很多问题...)我需要强大的解决方案.

编辑:

因此,对于发送utf-8到lxml,我使用

        converted = UnicodeDammit(webfile, isHTML=True)
        if not converted.unicode:
            print "ERR. UnicodeDammit failed to detect encoding, tried [%s]", \
                ', '.join(converted.triedEncodings)
            continue
        webfile = converted.unicode.encode('utf-8')
Run Code Online (Sandbox Code Playgroud)

python lxml

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

tmpfile和gzip组合问题

我有这个代码的问题:

file = tempfile.TemporaryFile(mode='wrb')
file.write(base64.b64decode(data))
file.flush()
os.fsync(file)
# file.seek(0)
f = gzip.GzipFile(mode='rb', fileobj=file)
print f.read()
Run Code Online (Sandbox Code Playgroud)

我不知道它为什么不打印任何东西.如果我取消注释file.seek,则会发生错误:

  File "/usr/lib/python2.5/gzip.py", line 263, in _read
    self._read_gzip_header()
  File "/usr/lib/python2.5/gzip.py", line 162, in _read_gzip_header
    magic = self.fileobj.read(2)
IOError: [Errno 9] Bad file descriptor
Run Code Online (Sandbox Code Playgroud)

仅供参考,此版本可以正常工作:

x = open("test.gzip", 'wb')
x.write(base64.b64decode(data))
x.close()
f = gzip.GzipFile('test.gzip', 'rb')
print f.read()
Run Code Online (Sandbox Code Playgroud)

编辑:对于wrb问题.初始化时它不会给我一个错误.Python 2.5.2.

>>> t = tempfile.TemporaryFile(mode="wrb")
>>> t.write("test")
>>> t.seek(0)
>>> t.read()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IOError: [Errno 9] Bad file descriptor
Run Code Online (Sandbox Code Playgroud)

python base64 gzip

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

Perl数组引用并避免"arg 1到键的类型必须是哈希"错误

我有一个$subscribers可能是undef 的标量,引用HASH或引用ARRAY.我已经分配了样本值$VAR1,$VAR2$VAR3进行了测试.

我只$subscribers对它是ARRAY的引用感兴趣,其中它包含多个值.在其他情况下,我对打印任何东西都不感兴趣(例如$subscribers=$VAR2;

在Perl v5.16.2下,代码似乎运行良好; 但是,当我将它移动到运行Perl v5.8.8的目标机器时,我收到编译错误:

% ./test.pl
Type of arg 1 to keys must be hash (not private variable) at ./test.pl line 23, near "$subscribers) "
Execution of ./test.pl aborted due to compilation errors.
Run Code Online (Sandbox Code Playgroud)

代码如下:

#!/usr/bin/perl -w

use strict;
use warnings;
use Data::Dumper;

my $VAR1 = undef;

my $VAR2 = {'msisdn' => '1234'};

my $VAR3 = [
  {'msisdn' => '1111'},
  {'msisdn' => '2222'}, …
Run Code Online (Sandbox Code Playgroud)

arrays perl hash ref perl-data-structures

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

解析srt字幕

我想解析srt字幕:

    1
    00:00:12,815 --> 00:00:14,509
    Chlapi, jak to jde s
    t?ma pracovníma sv?tlama?.

    2
    00:00:14,815 --> 00:00:16,498
    Trochu je zesilujeme.

    3
    00:00:16,934 --> 00:00:17,814
    Jo, sleduj.
Run Code Online (Sandbox Code Playgroud)

每个项目都进入结构.有了这个正则表达式:

A:

RE_ITEM = re.compile(r'(?P<index>\d+).'
    r'(?P<start>\d{2}:\d{2}:\d{2},\d{3}) --> '
    r'(?P<end>\d{2}:\d{2}:\d{2},\d{3}).'
    r'(?P<text>.*?)', re.DOTALL)
Run Code Online (Sandbox Code Playgroud)

B:

RE_ITEM = re.compile(r'(?P<index>\d+).'
    r'(?P<start>\d{2}:\d{2}:\d{2},\d{3}) --> '
    r'(?P<end>\d{2}:\d{2}:\d{2},\d{3}).'
    r'(?P<text>.*)', re.DOTALL)
Run Code Online (Sandbox Code Playgroud)

这段代码:

    for i in Subtitles.RE_ITEM.finditer(text):
    result.append((i.group('index'), i.group('start'), 
             i.group('end'), i.group('text')))
Run Code Online (Sandbox Code Playgroud)

使用代码BI只有一个项目在数组中(因为贪婪.*)和代码AI有空的'文本',因为没有贪心.*?

怎么治这个?

谢谢

python regex

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

4
推荐指数
3
解决办法
377
查看次数

标签 统计

python ×5

arrays ×1

base64 ×1

bash ×1

gzip ×1

hash ×1

linux ×1

list ×1

lxml ×1

performance ×1

perl ×1

perl-data-structures ×1

ref ×1

regex ×1