小编djm*_*mac的帖子

拆分字符串,忽略引号内的分隔符(python)

我想在逗号上拆分一个字符串,但忽略它在引号内的情况:

例如:

teststring = '48, "one, two", "2011/11/03"'
teststring.split(",")
['48', ' "one', ' two"', ' "2011/11/03"']
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

['48', ' "one, two"', ' "2011/11/03"']
Run Code Online (Sandbox Code Playgroud)

这可能吗?

python csv

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

使用python MySQLdb连接纠正异常处理

我创建了一个小/基本的python脚本来将数据插入到MySQL数据库中.我包含了一些错误处理 - 主要是为了关闭连接和/或在出错时防止挂起连接(......但也忽略了一些错误).

我以为我拥有的东西(见下文)是对的 - 似乎工作正常.但偶尔我会得到"连接太多"错误 - 我假设这意味着我实际上并没有正确关闭连接(或者错误处理可能不正确).

conn=MySQLdb.connect(host=####, user=####, passwd=####, db=####)
curs=conn.cursor()
try:
    curs.execute(sql)
    conn.commit()           

except MySQLdb.Error as e:
    if e[0]!= ###:
        raise

finally: 
    curs.close()    
    conn.close()
Run Code Online (Sandbox Code Playgroud)

(我也没试过finally:)

另一个(我认为重要的)是MySQL数据库使用InnoDB存储引擎.这是我第一次使用InnoDB引擎,也许MyISAM有一些与此相关的差异,我不知道(比如conn.commit(),但是出于错误)....这似乎是我所有的来源其他问题!

提前致谢

python error-handling innodb mysql-python

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

在python中解压缩嵌套的zip文件

我正在寻找一种在python中解压缩嵌套zip文件的方法.例如,考虑以下结构(为了方便起见,假设名称):

    • ZipfileA.zip
      • ZipfileA1.zip
      • ZipfileA2.zip
    • ZipfileB.zip
      • ZipfileB1.zip
      • ZipfileB2.zip

...等等.我正在尝试访问第二个zip中的文本文件.我当然不想提取所有东西,因为剪切数会使计算机崩溃(第一层有几百个拉链,第二层有几乎10,000个(每个拉链)).

我一直在使用'zipfile'模块 - 我可以打开第一级zipfiles.例如:

zipfile_obj = zipfile.ZipFile("/Folder/ZipfileA.zip")
next_layer_zip = zipfile_obj.open("ZipfileA1.zip")
Run Code Online (Sandbox Code Playgroud)

但是,这会返回一个"ZipExtFile"实例(不是文件或zipfile实例) - 然后我就不能继续打开这个特定的数据类型.我不能这样做:

data = next_layer_zip.open(data.txt)
Run Code Online (Sandbox Code Playgroud)

然而,我可以"读取"此zip文件文件:

next_layer_zip.read()
Run Code Online (Sandbox Code Playgroud)

但这完全没用!(即只能读取压缩数据/ goobledigook).

有没有人对我如何解决这个问题有任何想法(使用ZipFile.extract)?

我遇到过这个问题,http://pypi.python.org/pypi/zip_open/ - 它看起来完全符合我的要求,但它似乎对我不起作用.(继续获取"[Errno 2]没有这样的文件或目录:"对于我正在尝试处理的文件,使用该模块).

任何想法将不胜感激!! 提前致谢

python zip

9
推荐指数
5
解决办法
8811
查看次数

SQLalchemy“load_only”不只加载指定的列

我正在尝试使用 sqlalchemyload_only函数从表中选择列的子集。不幸的是,它似乎不仅仅返回函数调用中指定的列 - 具体来说,它似乎还获取主键(在我的例子中,是一个 auto_increment id 字段)。

一个简单的例子,如果我使用这个语句来构建一个查询,:

query = session.query(table).options(load_only('col_1', 'col_2'))
Run Code Online (Sandbox Code Playgroud)

然后query.statement看起来像这样:

SELECT "table".id, "table"."col_1", "table"."col_2" 
FROM "table"
Run Code Online (Sandbox Code Playgroud)

这不是我所期望的 - 鉴于我已经指定了要使用的“唯一”列...它们来自哪里id- 有没有办法删除它?

python sqlalchemy

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

关键字参数性能(python)

我试图通过使用timeit测试(计时)各种函数来优化一些python代码.

我发现根据变量是关键字参数还是函数内部,我得到的速度不同.

那是:

def test_function(A = value()):
    #rest of function....
Run Code Online (Sandbox Code Playgroud)

返回的结果与以下不同:

def test_function():
    A = value()
    #rest of function ...
Run Code Online (Sandbox Code Playgroud)

我想他们会得到非常相似的结果 - 我猜我不理解/遗漏了一些东西......

(也为测试做了10,000次循环)

python performance keyword-argument

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

正确构建本地python3,支持bz2

我正在尝试构建 python3 的本地版本(特别是 python3.7,但与 3.6.6 相同的问题),但是在链接到某些 C 库和/或头文件时遇到了问题(至少这是我认为的问题)是)。

我能够构建 python3.7,但遇到 bzip2 的问题(但我怀疑还会有其他我不知道的系统库)。这在尝试导入需要它作为导入错误的各种包/模块时表现出来:

ModuleNotFoundError: No module named '_bz2'
Run Code Online (Sandbox Code Playgroud)

从这个stackoverflow question - Ask Question - 看来我已经构建了没有正确bz2标头的python。python 构建本身不会失败。

具体问题是如何用bz2搭建本地版本的python?更一般地,问题是如何正确链接到系统库?(因为可能还有其他人我没有遇到错误)

就我所尝试的而言 - 我发现了这个(陈旧的)问题 - 你如何将 bz2 分配给 python 的 altinstall?和这个最近的问题Compiling bz2 support in python2并尝试了一些基于这些的东西。

我遇到的第一个问题实际上是找到正确的库等进行链接(上述问题中的解决方案建议设置CFLAGS="-I/path/to/bz2/include"LDFLAGS="-L/path/to/bz2/lib")。大概这些在我的系统上的某个地方(ubuntu 16.04),因为系统安装的 python2.7 和 python3.5 与 bzip2 没有问题。

我发现libbz2.so.1(和其他一些)/lib/x86_64-linux-gnu/- 但文件夹似乎没有遵循上面示例/答案的模式。因此,我构建了一个新的本地版本的 bz2(在.bzp我的本地文件夹中),然后在尝试构建 python3.7 时尝试链接到该版本,使用以下命令:

./configure --prefix=/home/user/.localpython CFLAGS="-I/home/user/.bz2/include" LDFLAGS="-L/home/user/.bz2/lib"
Run Code Online (Sandbox Code Playgroud)

我还尝试了一个更通用的配置(它松散地基于Compile Python with bz2 support,链接到上面的第二篇文章中。)

./configure --prefix=/home/user/.python CFLAGS="-I/usr/local/include" …
Run Code Online (Sandbox Code Playgroud)

python bzip2 python-3.x ldflags cflags

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