是否可以将两个 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 等函数时将其转换为功能不太丰富的类型。
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中的对数? (最好不要自己实施)
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值.
最后一个很简单 - 但前两个很难.我试过最大功能但失败了.
我需要分割一个字符串。我正在使用这个:
\n\ndef ParseStringFile(string):\np = re.compile(\'\\W+\')\nresult = p.split(string)\nRun Code Online (Sandbox Code Playgroud)\n\n但我有一个错误:我的结果有两个空字符串 (\'\'),一个位于 \'\xd0\x9b\xd0\xb5\xd0\xb2\' 之前。我该如何摆脱它们?
\n\n
非常简单的问题,但我找不到任何人解决这个问题,或者确实提到这个问题。基本上,我希望通过在启动远程 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
基本上我只是在编辑它之后尝试将一个字符串写入文件,并作为一个概念验证我只是想做一个应该是无意义的改变.但是,如下例所示,即使这样也会因为某种原因使输出的大小加倍.有谁知道为什么会这样?
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 中的一些新风格观点,并开始从生成器StopIteration到return生成器的转变。我的主要问题是这在自定义生成器中应该如何工作。我有一个类,我__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__?
我通常不喜欢使用奇怪的词,因为我觉得它不是很具描述性,但我无法弄清楚这个列表理解发生了什么,而且看起来微不足道.
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)
列表理解对第二个条目没有任何作用,老实说这让我感到困惑.我从未经历过这样的事情.任何有关这方面的帮助将不胜感激.
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) 我正在使用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) 我有两个清单:
wrong_chars = [
['?','?','?','?','?','?'],
['?','?','?','?','?','?'],
['?','?','?','?','?','?'],
['?','?','?','?','?','?'],
]
true_chars = [
['?'],
['?'],
['?'],
['?'],
]
Run Code Online (Sandbox Code Playgroud)
对于给定的字符串,我要替换的条目wrong_chars与那些在true_chars.在python中有一个干净的方法吗?
python ×10
python-3.x ×2
regex ×2
amazon-ec2 ×1
boto ×1
dictionary ×1
exception ×1
file ×1
generator ×1
io ×1
list ×1
mongodb ×1
nlp ×1
pymongo ×1
scikit-learn ×1
split ×1
string ×1
tokenize ×1
unicode ×1