小编Lev*_*sky的帖子

如何在matplotlib图中的特定位置添加网格线?

如何在matplotlib图中的y轴上的特定位置添加网格?

grid matplotlib

40
推荐指数
3
解决办法
3万
查看次数

检查对象是数字还是布尔值

设计一个等同于以下语句的逻辑表达式:

x是一个包含三个或五个元素的列表,其中第二个元素是字符串'Hip',第一个元素不是数字或布尔值.

是)我有的:

x = ['Head', 'Hip', 10]
print x[1] is 'Hip'
Run Code Online (Sandbox Code Playgroud)

我的问题:你如何检查它是否是布尔值或数字?

python python-2.7

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

转义字符串以在XML中使用

我正在使用Python xml.dom.minidom来创建XML文档.(逻辑结构 - > XML字符串,而不是相反.)

如何让它逃脱我提供的字符串,这样他们就无法搞砸XML?

python xml security escaping

31
推荐指数
5
解决办法
3万
查看次数

如何在python中找到文件或目录的所有者

我需要Python中的函数或方法来查找文件或目录的所有者.

功能应该是:

>>> find_owner("/home/somedir/somefile")
owner3
Run Code Online (Sandbox Code Playgroud)

python linux permissions file ownership

31
推荐指数
5
解决办法
4万
查看次数

是否有一个函数返回RegEx匹配开始的索引?

我有15个字符长的字符串.我正在使用正则表达式对其执行一些模式匹配.我想知道IsMatch()函数返回true 的子字符串的位置.

问题:是否有任何函数返回匹配的索引?

c# regex

31
推荐指数
4
解决办法
3万
查看次数

TypeError:b'1'不是JSON可序列化的

我试图以JSON发送POST请求.

*电子邮件变量的类型为"字节"

def request_to_SEND(email, index):
    url = "....."
    data = {
        "body": email.decode('utf-8'),
        "query_id": index,
        "debug": 1,
        "client_id": "1",
        "campaign_id": 1,
        "meta": {"content_type": "mime"}
    }
    headers = {'Content-type': 'application/json'}

    try:
        response = requests.post(url, data=json.dumps(data), headers=headers)
    except requests.ConnectionError:
        sys.exit()

    return response
Run Code Online (Sandbox Code Playgroud)

我收到错误:

 File "C:\Python34\lib\json\encoder.py", line 173, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: b'1' is not JSON serializable
Run Code Online (Sandbox Code Playgroud)

你能告诉我,我做错了什么吗?

python json http-post python-3.x

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

比较(断言相等)两个在unittest中包含numpy数组的复杂数据结构

我使用Python的unittest模块,并想检查两个复杂的数据结构是否相等.对象可以是具有各种值的dicts列表:数字,字符串,Python容器(列表/元组/ dicts)和numpy数组.后者是提出问题的原因,因为我不能这样做

self.assertEqual(big_struct1, big_struct2)
Run Code Online (Sandbox Code Playgroud)

因为它会产生一个

ValueError: The truth value of an array with more than one element is ambiguous.
Use a.any() or a.all()
Run Code Online (Sandbox Code Playgroud)

我想我需要为此编写自己的相等测试.它应该适用于任意结构.我目前的想法是递归函数:

  • 尝试直接比较当前"节点" arg1到相应节点arg2;
  • 如果没有引发异常,则继续(此处也处理"终端"节点/叶子);
  • 如果ValueError被抓住,会更深入,直到找到numpy.array;
  • 比较数组(例如像这样).

看起来有点问题的是跟踪两个结构的"相应"节点,但也许这zip就是我所需要的.

问题是:这种方法有更好(更简单)的替代方案吗?也许numpy为此提供了一些工具?如果没有建议的替代方案,我将实施这个想法(除非我有一个更好的想法)并发布作为答案.

PS我有一种模糊的感觉,我可能已经看到了解决这个问题的问题,但我现在找不到它.

PPS另一种方法是遍历结构并将所有numpy.arrays 转换为列表的函数,但是这更容易实现吗?对我来说似乎一样.


编辑:子类化numpy.ndarray听起来很有希望,但显然我没有将比较的两面硬编码到测试中.但其中一个确实是硬编码的,所以我可以:

  • 使用自定义子类填充它numpy.array;
  • 改变isinstance(other, SaneEqualityArray)isinstance(other, np.ndarray)jterrace的答案 ;
  • 在比较中总是将它用作LHS.

我在这方面的问题是:

  1. 它会起作用吗(我的意思是,这对我来说听起来不错,但也许一些棘手的边缘案例无法正确处理)?正如我所期望的那样,我的自定义对象总是在递归等式检查中最终成为LHS吗?
  2. 再次,有更好的方法(鉴于我至少得到一个真实numpy数组的结构).

编辑2:我试了一下,(看似)工作实现在这个答案中显示 …

python unit-testing numpy

20
推荐指数
3
解决办法
2万
查看次数

在python 3中继承文件对象(以扩展打开和关闭操作)

假设我想在内部openclose时间使用额外的操作来扩展内置文件抽象.在Python 2.7中,这适用于:

class ExtFile(file):
    def __init__(self, *args):
        file.__init__(self, *args)
        # extra stuff here

    def close(self):
        file.close(self)
        # extra stuff here
Run Code Online (Sandbox Code Playgroud)

现在我正在考虑将程序更新为Python 3,其中open是一个工厂函数,它可能会从io模块中返回任何几个不同类的实例,具体取决于它的调用方式.我原则上可以将它们全部子类化,但这很乏味,而且我必须重新实现这样open做的调度.(在Python 3中,二进制文件和文本文件之间的区别比2.x更重要,我需要两者.)这些对象将被传递给库代码,这些代码可能与它们做任何事情,所以这些成语制作一个"类文件"的duck-typed类来包装返回值open和转发必要的方法将是最冗长的.

任何人都可以建议3.x方法,除了显示的2.x代码之外,尽可能少的额外样板吗?

python python-3.x

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

dict理解中的多个键值对

我试图在dict理解中创建多个键:值对,如下所示:

{'ID': (e[0]), 'post_author': (e[1]) for e in wp_users}
Run Code Online (Sandbox Code Playgroud)

我收到了 "missing ','"

我也这样试过:

[{'ID': (e[0]), 'post_author': (e[1])} for e in wp_users]
Run Code Online (Sandbox Code Playgroud)

然后我收到了 "list indices must be integers, not str"

我理解,但不确定纠正这个的最佳方法,如果多个键:值对可以用dict理解吗?

python dictionary dictionary-comprehension

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

在没有Python循环的情况下制作一个numpy数组单调

我有一个数组的值,它应该是单调的(比如减少),但是随机区域的值随着索引而增加.

我需要一个数组,其中每个区域都替换为它前面的值,以便对结果数组进行排序.

所以如果给定的数组是:

a = np.array([10.0, 9.5, 8.0, 7.2, 7.8, 8.0, 7.0, 5.0, 3.0, 2.5, 3.0, 2.0])
Run Code Online (Sandbox Code Playgroud)

我想要结果

b = np.array([10.0, 9.5, 8.0, 7.2, 7.2, 7.2, 7.0, 5.0, 3.0, 2.5, 2.5, 2.0])
Run Code Online (Sandbox Code Playgroud)

这是一个图形表示:

例

我知道如何用Python循环实现它,但有没有办法用NumPy机器来做到这一点?

Python代码为清晰起见:

b = np.array(a)
for i in range(1, b.size):
    if b[i] > b[i-1]:
        b[i] = b[i-1]
Run Code Online (Sandbox Code Playgroud)

python arrays numpy vectorization

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