小编Dan*_*ski的帖子

你如何将这个正则表达式的习惯用法从Perl翻译成Python?

大约一年前我从Perl切换到Python,并没有回头.我发现只有一个习惯用法在Perl中比在Python中更容易做到:

if ($var =~ /foo(.+)/) {
  # do something with $1
} elsif ($var =~ /bar(.+)/) {
  # do something with $1
} elsif ($var =~ /baz(.+)/) {
  # do something with $1
}
Run Code Online (Sandbox Code Playgroud)

相应的Python代码并不那么优雅,因为if语句不断嵌套:

m = re.search(r'foo(.+)', var)
if m:
  # do something with m.group(1)
else:
  m = re.search(r'bar(.+)', var)
  if m:
    # do something with m.group(1)
  else:
    m = re.search(r'baz(.+)', var)
    if m:
      # do something with m.group(2)
Run Code Online (Sandbox Code Playgroud)

有没有人有一种优雅的方式在Python中重现这种模式?我已经看过使用匿名函数调度表,但对于少数正则表达式来说,这些对我来说似乎有点笨拙......

python regex perl

45
推荐指数
6
解决办法
8779
查看次数

你的语言是什么"挂断"?

我有兴趣阅读一些最近的语言与语言问题... Perl与Python,Python与Java,一种语言可以比另一种语言更好吗?

我注意到的一件事是我们很多人都有不喜欢语言的非常肤浅的理由.我们乍看之下注意到了这些事情,他们拒绝了我们.如果我们烦恼的话,我们可以避免在2秒内学会爱或忽略的功能,这些功能可能是完美的语言.

好吧,我和下一个人一样愧疚,如果不是更多的话.开始:

  • Ruby:我看到的所有Ruby示例代码都使用puts命令,这是一种幼稚的意第绪语解剖术语.因此,即使我应该,也不能认真对待Ruby代码.
  • Python:我第一次看到它时,我对整个重要的空白事物假笑.我在接下来的几年里避免了它.现在我几乎不用任何其他东西.
  • Java:我不喜欢identifiersThatLookLikeThis.我不确定为什么.
  • Lisp:我的所有括号都有问题.不同的重要性和目的(函数声明,变量赋值等)在语法上没有区别,我懒得学习什么.
  • Fortran:大写的一切都会伤到我的眼睛.我知道现代代码不必像这样写,但大多数示例代码是......
  • Visual Basic:它让我知道Dim用于声明变量的东西,因为我记得当它用于维度数组时,GW-BASIC的好日子.

什么语言没有看我的权利乍一看?Perl,C,QBasic,JavaScript,汇编语言,BASH shell,FORTH.

好的,既然我已经播放了我的脏衣服......我想听你的. 你的语言挂断是什么?什么肤浅的功能打扰你?你是如何克服它们的?

syntax language-features language-design

16
推荐指数
12
解决办法
1873
查看次数

什么是在Debian或Ubuntu下自动获取构建依赖项的Debian方法?

我最近为GTK应用程序下载了源代码tarball,我想改进它.它使用标准./configuremake构建序列.

第一次通过,configure报告了一堆未满足的构建依赖关系,例如libgnomeui-2.0.正如我通常所做的那样,我不得不手动浏览并找到*-dev与这些依赖项相对应的Debian 软件包名称......当然这些名称永远不会完全相同,所以它会变成一个真正的麻烦.

那么我发生了什么... 是否有任何帮助工具来自动安装automake/ autoconf配置文件列出的构建依赖项???

(我已经了解了这些dpkg-buildpackage工具,但在这种情况下,我感兴趣的是从原始的独立于分发的源代码tarball构建,而不是从Debian软件包源代码构建.)

linux ubuntu debian dependencies build

15
推荐指数
2
解决办法
9987
查看次数

我在哪里可以找到*all*MIPS指令的描述,

有谁知道我可以找到32位MIPS指令/操作码列表的网站,具有以下功能:

  • 清楚地区分真实操作码和汇编语言宏
  • 描述指令行为,包括取决于权限级别的差异.
  • 指示引入/修改指令的指令集修订版(例如MIPS I,MIPS II,MIPS32等)
  • 包括特权指令,例如系统调用.

我知道很多网站都记录了指令集的"一部分",主要用于教学目的.他们倾向于遗漏或仅部分描述浮点和特权指令.

如果你想知道,我正在研究MIL处理器子集的Verilog代码,并试图弄清楚它在多大程度上符合任何真正的MIPS处理器的指令集!谢谢你的任何指示.

assembly reference mips instruction-set

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

确保密钥的笛卡尔积出现在Pandas表中

我有一个Pandas数据框,它有两个关键列,我想确保表中存在这些键的笛卡尔积(因为我必须制作一个包含所有组合的2D图).我无法想出一个相当简短和惯用的方法来做到这一点.

例如,我从这张表开始,给出水果和蔬菜的组合,以及它们如何一起品尝:

   combo   fruit      veg
0  tasty   apple   carrot
1  yucky  banana   carrot
2  tasty  banana  lettuce
3  yucky   lemon  lettuce
Run Code Online (Sandbox Code Playgroud)

我想最终得到所有可能组合的表:

    fruit      veg    combo
0   apple   carrot    tasty
1   apple  lettuce  UNKNOWN
2  banana   carrot    yucky
3  banana  lettuce    tasty
4   lemon   carrot  UNKNOWN
5   lemon  lettuce    yucky
Run Code Online (Sandbox Code Playgroud)

这是我发现的最佳方式:

import pandas as pd

# Initial data
df=pd.DataFrame(dict(fruit=['apple','banana','banana','lemon'],
                     veg=['carrot','carrot','lettuce','lettuce'],
                     combo=['tasty','yucky','tasty','yucky']))

# Solution starts here
veg=df.groupby('veg').size().reset_index()
fruit=df.groupby('fruit').size().reset_index()
fruit[0] = veg[0] = 0    #use this dummy column for the join to work! …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

实时感知sleep()调用?

我已经写了一个实用工具,通过蓝牙TomTom GPS手表交谈,并且我试图让它作为一个即时可待的背景守护程序运行良好.

程序定期与GPS设备通信,然后暂时与sleeps 通信,直到再次需要它为止.

我注意到sleep()与系统挂起奇怪地交互:当我进入系统挂起(运行Linux 3.16.0内核的笔记本电脑)然后唤醒计算机时,sleep似乎没有注意到暂停时间.例如,请执行以下操作sleep.c:

#include <time.h>
#include <stdio.h>
#include <unistd.h>

int main(int argc, char**argv)
{
    time_t t=time(NULL);
    printf("sleep at: %s", ctime(&t));

    sleep(atoi(argv[1]));

    t=time(NULL);
    printf("wake at: %s", ctime(&t));
}
dlenski@dlenski-ultra:~$ 
Run Code Online (Sandbox Code Playgroud)

中途编译,运行和睡眠;

$ gcc sleep.c -o sleep
$ ./sleep 30
sleep at: Fri Aug 21 21:05:36 2015
<suspend computer for 17 seconds>
wake at: Fri Aug 21 21:06:23 2015
Run Code Online (Sandbox Code Playgroud)

有没有一种正确的方法来暂停程序执行的方式是时钟 - 时间 -意识而不是系统正常运行时间 -意识到? …

c linux sleep suspend clock

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

从 SQLAlchemy 子查询中选择整个实体

如果我在 SQLAlchemy 查询中指定映射类(~= 数据库表),则返回的行将包含这些类的实例:

q = sess.query(table1, table2, table3.string_column)
q.first()
==> ( <instance of table1>,
      <instance of table2>,
      'string' )
Run Code Online (Sandbox Code Playgroud)

但是,如果我从子查询中选择,则返回的行包含单个列而不是类实例:

q = sess.query(table1, table2, table3.string_column)

q2 = sess.query( q.subquery() )
q2.first()
==> ( col1_of_table1, col2_of_table1, ...,
      col2_of_table2, col2_of_table2, ...,
      'string' )
Run Code Online (Sandbox Code Playgroud)

有没有办法指定我要将子查询中的行保留为映射类的实例?

如果不加入映射类的新实例,我无法弄清楚如何做到这一点。该corresponding_column方法允许我从子查询中引用特定的,但我无法弄清楚如何从子查询中引用完整的实体。我试过玩,select_from但它没有给我正确的行为。

有什么建议?

sqlalchemy python-2.7

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

使用PyParsing进行增量但完整的解析?

我正在使用PyParsing来解析一些类似C格式的大文本文件(大括号和分号以及所有这些).

PyParsing效果很好,但由于我的文件大小,它很慢并且消耗了大量内存.

因此,我想尝试实现一种增量解析方法,其中我将逐个解析源文件的顶级元素.scanStringpyparsing 的方法似乎是明显的方法.但是,我想确保在解析的部分之间没有无效/不可解析的文本scanString,并且无法找到执行此操作的好方法.

这是一个简化的例子,显示了我遇到的问题:

sample="""f1(1,2,3); f2_no_args( );
# comment out: foo(4,5,6);
bar(7,8);
this should be an error;
baz(9,10);
"""

from pyparsing import *

COMMENT=Suppress('#' + restOfLine())
SEMI,COMMA,LPAREN,RPAREN = map(Suppress,';,()')

ident = Word(alphas, alphanums+"_")
integer = Word(nums+"+-",nums)

statement = ident("fn") + LPAREN + Group(Optional(delimitedList(integer)))("arguments") + RPAREN + SEMI

p = statement.ignore(COMMENT)

for res, start, end in p.scanString(sample):
    print "***** (%d,%d)" % (start, end)
    print res.dump()
Run Code Online (Sandbox Code Playgroud)

输出:

***** (0,10)
['f1', ['1', '2', '3']] …
Run Code Online (Sandbox Code Playgroud)

parsing pyparsing python-2.7

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

用python请求压缩请求体?

(这个问题不是关于来自Web服务器的gzip-encoded 响应的透明解压缩;我知道这requests会自动处理.)

问题

我正在尝试将文件POST到RESTful Web服务.显然,requests这很容易做到:

files = dict(data=(fn, file))
response = session.post(endpoint_url, files=files)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我的文件是一个非常高度可压缩的格式(是的,XML),所以我想确保请求体是压缩的.

服务器声称接受gzip编码(Accept-Encoding: gzip在响应头中),所以我应该能够gzip整个身体请求体,对吧?

试图解决方案

这是我尝试完成这项工作:我首先构建请求并准备它,然后我进入PreparedRequest对象,猛拉出来body,运行它gzip,并把它放回去.(哦,不要忘记更新Content-LengthContent-Encoding标题.)

files = dict(data=(fn, file))
request = request.Request('POST',endpoint_url, files=files)

prepped = session.prepare_request(request)
with NamedTemporaryFile(delete=True) as gzfile:
    gzip.GzipFile(fileobj=gzfile, mode="wb").write(prepped.body)
    prepped.headers['Content-Length'] = gzfile.tell()
    prepped.headers['Content-Encoding'] = 'gzip'
    gzfile.seek(0,0)
    prepped.body = gzfile.read()
    response = session.send(prepped)
Run Code Online (Sandbox Code Playgroud)

不幸的是,服务器没有合作并返回500 Internal Server Error.也许它并没有真正接受 …

python gzip http python-requests

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

如何在Ubuntu上运行无扩展(也许是ELF)文件?

我在Linux上获得了一个"二进制"文件,并为特定任务提供了一个单独的Windows文件.这些程序是windows上的exe.该版本的linux版本在linux上具有与Windows相同的功能.

但是,我无法执行此操作.我尝试(在终端上)仅通过文件名执行它./[filename],甚至尝试chmod +x [filename]然后尝试第二种方式.

对于一切...我得到结果:"找不到命令".(顺便说一下,文件肯定在那里).

我应该做些什么?它上面的文件命令产生:

ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=e805f746e65c09cc8b0c037d8a8c27ee0a6a051c
Run Code Online (Sandbox Code Playgroud)

linux bash shell

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