小编Sla*_*off的帖子

链接两个 Pymongo 游标

是否可以将两个 Pymongo 游标链接在一起?它们看起来与生成器非常相似,我想象可能只使用 itertools 来链接它们,但遗憾的是这不起作用。此外,我尝试使用其他返回中存在的 union 选项,但游标对象不存在该选项。

当我调用dir游标对象时,我看到的最有希望的事情是 add_option ,但这似乎是针对不同的东西。

只需将每个 mongo 对象添加到列表中并迭代它就可以实现这样的东西,但由于很多原因,这似乎是一个糟糕的选择,所以我想知道是否有一些内置函数或者更优雅的技巧。有什么想法吗?

一般不起作用的代码:

        prod_cursor = self.prod_index.find_modules_by_category("fakeqwerty")  # empty generators
        edge_cursor = self.edge_index.find_modules_by_category("fakeqwerty")
        for k, v in kwargs["queries"].items():
            prod_function = getattr(self.prod_index, k)
            itertools.chain(prod_cursor, prod_function(*v))
            edge_function = getattr(self.edge_index, k)
            itertools.chain(edge_cursor, edge_function(*v))
Run Code Online (Sandbox Code Playgroud)

其中edge和prod函数的结果都是游标。

更新:

为了清楚起见,我希望结果保留为光标,而不是在我的代码库中其他地方使用 count 等函数时将其转换为功能不太丰富的类型。

python mongodb pymongo

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

Python3:计算复数指数和对数

math.exp() 不适合复杂的数字:

>>> math.exp (math.pi*1j)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't convert complex to float
Run Code Online (Sandbox Code Playgroud)

这不会对我造成太大伤害,因为它**按预期工作:

>>> math.e ** (math.pi*1j)
(-1+1.2246467991473532e-16j)
Run Code Online (Sandbox Code Playgroud)

现在的问题是对数.math.log不适用于负数:

>>> math.log(-1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: math domain error
Run Code Online (Sandbox Code Playgroud)

(预期结果:(0+3.141592653589793j))

如何计算结果复杂的python中的对数? (最好不要自己实施)

python complex-numbers python-3.x

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

在多维dict中查找最大值,最小值

stats = {{'node100': {'load_1min': '0.58'}, 'node200': {'load_1min': '0.64'}, 'node28': {'load_1min': '0.69'}}
Run Code Online (Sandbox Code Playgroud)

我想找到
1.具有最大Load_1min值的
键,2.具有最小Load_1min值的键,
3.用于统计数据的所有load_min键的avg值.

最后一个很简单 - 但前两个很难.我试过最大功能但失败了.

python dictionary

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

从Python列表中删除空字符串

我需要分割一个字符串。我正在使用这个:

\n\n
def ParseStringFile(string):\np = re.compile(\'\\W+\')\nresult = p.split(string)\n
Run Code Online (Sandbox Code Playgroud)\n\n

但我有一个错误:我的结果有两个空字符串 (\'\'),一个位于 \'\xd0\x9b\xd0\xb5\xd0\xb2\' 之前。我该如何摆脱它们?

\n\n

在此输入图像描述

\n

python regex split

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

使用 boto 将环境变量添加到 ec2 实例

非常简单的问题,但我找不到任何人解决这个问题,或者确实提到这个问题。基本上,我希望通过在启动远程 ec2 盒子时将环境变量与该盒子关联起来,向远程 ec2 盒子添加少量信息。

我已经看到一些关于 的概念的提及tags,但我正在寻找可以在实例内天真地检查和访问的东西,并且尚不清楚是否tags提供该功能。

理想情况下,在实例化实例后,任何外部方也无法访问添加这些环境变量的接口。

我意识到我可以通过设置一个安全数据库来实现类似的效果,但这似乎过于复杂,只是尝试向实例添加一些元数据。

不是在寻找讲义,但任何有关这方面的文档的链接将不胜感激。我目前正在使用boto(下面的代码),所以适合boto框架的东西将是理想的,但如果我必须下降到亚马逊的 REST api,那也不会是世界末日。

def create_instances(connection, type, number, **kwargs):
    kwargs.update({
        'min_count': number,
        'max_count': number
    })
    return connection.run_instances(**kwargs).instances  # maybe if kwargs had an environment variable?
Run Code Online (Sandbox Code Playgroud)

python environment-variables amazon-ec2 boto amazon-web-services

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

为什么这个python代码加倍我的文件大小而不改变它?

基本上我只是在编辑它之后尝试将一个字符串写入文件,并作为一个概念验证我只是想做一个应该是无意义的改变.但是,如下例所示,即使这样也会因为某种原因使输出的大小加倍.有谁知道为什么会这样?

content = StringIO.getvalue()
with open("real.png", 'wb') as dump:
    dump.write(content) #35KB
content = [str(ord(char)) for char in content]
content = "".join([hex(int(char)).lstrip("0x").zfill(2) for char in content])
with open("new.png", "wb") as dump:
    dump.write(content) #70KB
Run Code Online (Sandbox Code Playgroud)

python io file

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

自定义 python 生成器中的返回和停止迭代

阅读 Python 中的一些新风格观点,并开始从生成器StopIterationreturn生成器的转变。我的主要问题是这在自定义生成器中应该如何工作。我有一个类,我__next__直接覆盖了方法,因为我必须添加一些逻辑来跟踪生成。

下面非常接近我正在做的事情,包含所有关键元素。请注意,我实际上并不是在创建一个复制列表的生成器,只是将其作为一个最小的示例。

class Test():
    items = <list>

    def __init__(self):
        self.index = 0

    def __next__(self):
        if self.index >= len(self.items):
            raise StopIteration
        value = self.items[self.index]
        self.index += 1
        return value

    def reset(self):
        self.index = 0
Run Code Online (Sandbox Code Playgroud)

所以在这种情况下,我会遍历一个列表,直到它耗尽,然后下游调用将决定是重置生成器还是在耗尽后继续。但是,StopIteration由于它已被弃用,我如何在不使用的情况下启用这样的功能?使用returnhere 来提高 a的标准建议StopIteration似乎并不适用,我真的宁愿不更改下游代码来检查生成器产量Nones

那我应该在这里做什么?是StopIteration例外还是可以接受的__next__

python exception generator python-3.x

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

奇怪的列表理解行为

我通常不喜欢使用奇怪的词,因为我觉得它不是很具描述性,但我无法弄清楚这个列表理解发生了什么,而且看起来微不足道.

current_path = os.path.dirname(os.path.abspath(__file__))
relative_paths = ["/testdir/extension.foo, /testdir/nested/extension.foo"]
absolute_paths = [(current_path+item) for item in relative_paths]
Run Code Online (Sandbox Code Playgroud)

我会假设这个输出会是这样的:

absolute_paths = [absolute_path, absolute_path]
Run Code Online (Sandbox Code Playgroud)

但输出是:

absolute_paths = [absolute_path, relative_path]
Run Code Online (Sandbox Code Playgroud)

列表理解对第二个条目没有任何作用,老实说这让我感到困惑.我从未经历过这样的事情.任何有关这方面的帮助将不胜感激.

python list-comprehension list

0
推荐指数
1
解决办法
73
查看次数

Python,下面的代码有什么问题?range(20,-1,0) 返回一个错误

for i in range(20,-1,0):
    print(i)
Run Code Online (Sandbox Code Playgroud)

错误是:

Traceback (most recent call last):
  File "D:/Python/b.py", line 1, in <module>
    for i in range(20,-1,0):
ValueError: range() arg 3 must not be zero
Run Code Online (Sandbox Code Playgroud)

python

0
推荐指数
1
解决办法
5890
查看次数

正则表达式/"token_pattern"用于scikit-learn文本Vectorizer

我正在使用sklearn用tf-idf Vectorizer对象进行一些NLP矢量化.可以使用关键字"token_pattern"构造此对象.

我想避免使用hashtags(#foobar),数字(以及以数字开头的字符串,即10mg),以"RT"(转发)开头的任何行,或"删除的推文"行.

另外,我想忽略unicode.

我想保留URL(不是'http://'),并将它们标记为可能存在于其中的任何单词([A-Za-z] +).

我对Regex有一些经验,但到目前为止还不需要更复杂的模式.

以下是我对所有内容的刺激......这显然不是最好的调查方式,但它总结了我目前对正则表达式规则的看法.

注意:这里的skearn doc 显示了使用字符串上的unicode标志的默认"token_pattern",我不明白为什么......也许是单独的问题.

pat2 = r"(?im)([A-Z]+)(?<!^@)([A-Z]+)(?<!^#)([A-Z]+)(?<!^(RT))([A-Z]+)(?<!^Deleted)(?<=^(http://))([A-Z]+)"
Run Code Online (Sandbox Code Playgroud)

我的分解:

(?im)  #Are flags for 'multi-line' and 'case insensitive'

([A-Z]+)(?<!^@) #A negative look back, match [A-Z]+ only if not preceded by 'starts with @'.

(?<=^(http://))([A-Z]+) #A positive look forward, match [A-Z]+ only if 'starts with "http://"' is present.
Run Code Online (Sandbox Code Playgroud)

我觉得这不是一个优雅的解决方案,即使它被调整为工作......

TIA

更新:原始数据示例:

如果知道有用,我正在使用pandas数据帧来加载数据.我是熊猫的新手,可能会错过一些基于熊猫的解决方案.

从这些原始数据中,我只想要从文本和URL中获取的单词.这个例子很糟糕......请进一步评论,以帮助我更好地定义...... thx!

生的:

http://foxsportswisconsin.ning.com/profiles/blogs/simvastatin-20-mg-pas-cher-sur-internet-acheter-du-simvastatin-20
Run Code Online (Sandbox Code Playgroud)

符号化:

[foxsportswisconsin, ning, com, profiles, blogs, simvastatin, mg, pas, cher, sur, internet, acheter, du, simvastatin]
Run Code Online (Sandbox Code Playgroud)

regex nlp machine-learning tokenize scikit-learn

0
推荐指数
1
解决办法
3278
查看次数

Python - 用另一个列表替换字符列表

我有两个清单:

wrong_chars = [
    ['?','?','?','?','?','?'],
    ['?','?','?','?','?','?'],
    ['?','?','?','?','?','?'],
    ['?','?','?','?','?','?'],
]

true_chars = [
    ['?'],
    ['?'],
    ['?'],
    ['?'],
]
Run Code Online (Sandbox Code Playgroud)

对于给定的字符串,我要替换的条目wrong_chars与那些在true_chars.在python中有一个干净的方法吗?

python string unicode

-1
推荐指数
1
解决办法
678
查看次数