小编mgi*_*son的帖子

python中的前缀匹配

我有一个字符串:

" This is such an nice artwork"
Run Code Online (Sandbox Code Playgroud)

我有一个tag_list ["art","paint"]

基本上,我想写一个函数,接受这个字符串和taglist作为输入,并返回单词"artwork",因为艺术作品包含在taglist中的单词art.

我如何最有效地做到这一点?

我希望这在速度方面是有效的

 def prefix_match(string, taglist):
        # do something here
     return word_in string
Run Code Online (Sandbox Code Playgroud)

python

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

按字符串调用方法

我有以下课程.

func_list= ["function1", "function2", "function3"]

class doit(object):
    def __init__(self):
        for item in func_list:
            if item == "function1":
                self.function1()
            elif item == "function2":
                self.function2()
            elif item == "function3":
                self.function3()

    def function1(self):
        #do this
        pass
    def function2(self):
        #do that
        pass
    def function3(self):
        pass
Run Code Online (Sandbox Code Playgroud)

如果创建了此类的实例,它将遍历字符串列表并根据实际字符串调用方法.列表中的字符串具有相应方法的名称.

我怎样才能以更优雅的方式做到这一点?我不想为elif我添加到列表中的每个"函数" 添加另一个路径.

python python-2.5

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

Python如何迭代for循环?

我在Python上尝试了以下代码,这就是我所得到的:似乎我尝试通过更改elem来对迭代进行许多更改,但它不起作用.

lis = [1,2,3,4,5]
for elem in lis:
    elem = 3

print lis
[1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

但是,如果迭代物是具有自己的方法(如列表)的对象,则可以在for循环中修改它们.

lis = [[1],[2]]
for elem in lis:
    elem.append(8)

print lis
    [[1, 8], [2, 8]]
Run Code Online (Sandbox Code Playgroud)

for循环中究竟什么是"elem"术语?提前致谢!

python loops for-loop

6
推荐指数
2
解决办法
255
查看次数

打印Python词典的差异

我想拿两本字典并打印出它们的差异.此差异应包括键和值的差异.我已经创建了这个小片段,以使用unittest模块中的内置代码实现结果.然而,这是一个讨厌的黑客,因为我必须子类unittest.TestCase并提供一种runtest()方法来工作.此外,此代码将导致应用程序出错,因为它会AssertError在存在差异时引发.我真正想要的就是打印差异.

import unittest
class tmp(unittest.TestCase):
    def __init__(self):
         # Show full diff of objects (dicts could be HUGE and output truncated)
        self.maxDiff = None
    def runTest():
        pass
_ = tmp()
_.assertDictEqual(d1, d2)
Run Code Online (Sandbox Code Playgroud)

我希望使用该difflib模块,但它看起来只适用于字符串.有没有办法解决这个问题并仍在使用difflib

python

6
推荐指数
2
解决办法
5360
查看次数

python的csv读者可以留下引号吗?

我想使用python CSV阅读器,但我想留下引号.这就是我想要的:

>>> s = '"simple|split"|test'
>>> reader = csv.reader([s], delimiter='|', skipinitialspace=True)
>>> reader.next()
['"simple|split"', 'test']
Run Code Online (Sandbox Code Playgroud)

但我实际得到:

['simple|split', 'test']
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我希望引用的字符串仍然被引用传递.

我知道CSV阅读器正在按预期工作,我的用例是滥用它,但是有什么方法可以将它弯曲到我的意愿吗?或者我是否必须编写自己的字符串解析器?

python csv quotes

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

确定是否从一元ufunc或二进制ufunc调用ndarray子类上的__array_wrap__

有没有办法判断是否__array_wrap__使用一元函数或二元函数调用ndarray子类?(另一个参考)

python numpy

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

为什么重写__contains__会破坏OrderedDict.keys?

我正在继承OrderedDict(Cpython,2.7.3)来表示数据文件. __getitem__从数据文件中提取一个字段并将其设置在当前实例上,类似于我在下面发布的代码.现在我想覆盖__contains__返回,True如果字段在字典中或磁盘上的文件中,因为它可以以任何方式读取.然而,这似乎打破OrderedDict了检查它的钥匙的能力.

from collections import OrderedDict

dictclass = OrderedDict

class Foo(dictclass):
    def __getitem__(self,key):
        try:
            return dictclass.__getitem__(self,key)
        except KeyError:
            pass

        data = key*2
        self[key] = data
        return data

    def __contains__(self,whatever):
        return dictclass.__contains__(self,whatever) or 'bar' in whatever

a = Foo()
print a['bar']
print a.keys()
Run Code Online (Sandbox Code Playgroud)

如果您运行上面的代码,您将获得此输出:

barbar
[]
Run Code Online (Sandbox Code Playgroud)

请注意,如果您更改dictclass = dict上面的代码,它似乎仍然有效(给出以下输出).

barbar
['bar']
Run Code Online (Sandbox Code Playgroud)

我做错了什么吗?

python python-2.7

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

使用pvpython将数据文件类型读取器添加到paraview

我知道您可以将不同数据文件类型的读取器添加到paraview中,但是,所有人都在谈论在c ++中做很多VTK东西,以及(可能更糟)重新编译paraview以使其了解您的数据文件格式。另一方面,paraview还支持python中的脚本编写。也许是因为我对VTK不熟悉,但是对我来说,我只能从pvpython 操作 VTK对象。有什么方法可以使用pvpython动态地将阅读器添加到paraview中?

python vtk paraview pvpython

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

numpy插入轴使数据不连续

为什么插入新轴会使数据不连续?

>>> a = np.arange(12).reshape(3,4,order='F')
>>> a
array([[ 0,  3,  6,  9],
       [ 1,  4,  7, 10],
       [ 2,  5,  8, 11]])
>>> a.reshape((3,1,4)).flags
  C_CONTIGUOUS : False
  F_CONTIGUOUS : False
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY : False
>>> a[np.newaxis,...].flags
  C_CONTIGUOUS : False
  F_CONTIGUOUS : False
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY : False
>>> a.flags
  C_CONTIGUOUS : False
  F_CONTIGUOUS : True
  OWNDATA : False
  WRITEABLE : True
  ALIGNED : True
  UPDATEIFCOPY …
Run Code Online (Sandbox Code Playgroud)

python numpy

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

os.environ与不存在的键/环境变量

对于python程序,我os.environ()用来获取具有某个键的环境变量.但是,如果密钥在环境中不存在,我希望能够做一些事情,而不是抛出一个KeyError.

我看过了几个解决方案,但os.environ.get()os.getenv()似乎比我期望如何采取不同的行动.有没有办法使用os.environ()并仍然可以解决不存在的环境变量?

python environment-variables

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