我有一个字符串:
" This is such an nice artwork"
我有一个tag_list ["art","paint"]
基本上,我想写一个函数,接受这个字符串和taglist作为输入,并返回单词"artwork",因为艺术作品包含在taglist中的单词art.
我如何最有效地做到这一点?
我希望这在速度方面是有效的
 def prefix_match(string, taglist):
        # do something here
     return word_in string
我有以下课程.
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
如果创建了此类的实例,它将遍历字符串列表并根据实际字符串调用方法.列表中的字符串具有相应方法的名称.
我怎样才能以更优雅的方式做到这一点?我不想为elif我添加到列表中的每个"函数" 添加另一个路径.
我在Python上尝试了以下代码,这就是我所得到的:似乎我尝试通过更改elem来对迭代进行许多更改,但它不起作用.
lis = [1,2,3,4,5]
for elem in lis:
    elem = 3
print lis
[1, 2, 3, 4, 5]
但是,如果迭代物是具有自己的方法(如列表)的对象,则可以在for循环中修改它们.
lis = [[1],[2]]
for elem in lis:
    elem.append(8)
print lis
    [[1, 8], [2, 8]]
在for循环中究竟什么是"elem"术语?提前致谢!
我想拿两本字典并打印出它们的差异.此差异应包括键和值的差异.我已经创建了这个小片段,以使用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)
我希望使用该difflib模块,但它看起来只适用于字符串.有没有办法解决这个问题并仍在使用difflib?
我想使用python CSV阅读器,但我想留下引号.这就是我想要的:
>>> s = '"simple|split"|test'
>>> reader = csv.reader([s], delimiter='|', skipinitialspace=True)
>>> reader.next()
['"simple|split"', 'test']
但我实际得到:
['simple|split', 'test']
在我的情况下,我希望引用的字符串仍然被引用传递.
我知道CSV阅读器正在按预期工作,我的用例是滥用它,但是有什么方法可以将它弯曲到我的意愿吗?或者我是否必须编写自己的字符串解析器?
有没有办法判断是否__array_wrap__使用一元函数或二元函数调用ndarray子类?(另一个参考)
我正在继承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()
如果您运行上面的代码,您将获得此输出:
barbar
[]
请注意,如果您更改dictclass = dict上面的代码,它似乎仍然有效(给出以下输出).
barbar
['bar']
我做错了什么吗?
我知道您可以将不同数据文件类型的读取器添加到paraview中,但是,所有人都在谈论在c ++中做很多VTK东西,以及(可能更糟)重新编译paraview以使其了解您的数据文件格式。另一方面,paraview还支持python中的脚本编写。也许是因为我对VTK不熟悉,但是对我来说,我只能从pvpython 操作 VTK对象。有什么方法可以使用pvpython动态地将阅读器添加到paraview中?
为什么插入新轴会使数据不连续?
>>> 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 …对于python程序,我os.environ()用来获取具有某个键的环境变量.但是,如果密钥在环境中不存在,我希望能够做一些事情,而不是抛出一个KeyError.
我看过了几个解决方案,但os.environ.get()并os.getenv()似乎比我期望如何采取不同的行动.有没有办法使用os.environ()并仍然可以解决不存在的环境变量?