小编buk*_*zor的帖子

python:如何覆盖str.join?

我们有一个str的子类(称之为MyStr),我需要能够控制str.join如何与我的子类交互.

至少,所有MyStr的连接应该产生另一个MyStr,并且MyStr和"plain"str的连接应该抛出TypeError.

目前,这是发生的事情:(MyStr子类unicode)

>>> m = MyStr(':')

>>> m.join( [MyStr('A'), MyStr('B')] )
u'A:B'

>>> ':'.join( [MyStr('A'), 'B', u'C'] )
u'A:B:C'
Run Code Online (Sandbox Code Playgroud)

python string subclass

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

python unicode正则表达式

我想用一个unicode友好的版本替换下面的正则表达式,它将捕获像http://➡.ws和其他非ascii IRI这样的东西.目的是从用户的文本中获取这些文本并对其进行编码并将其标记为真实链接.

Python提供了一个re.UNICODE标志,它改变了\ w的含义,但在这种情况下(我可以看到)它并不是非常有用,因为它被定义为"字母数字字符和下划线",而不是我所有的下面的字符类都包括下划线.

domain_regex = re.compile(r"""
    (
        (https?://)
        (
            [0-9a-zA-Z]
            [0-9a-zA-Z_-]*
            \.
        )+
        [a-zA-Z]{2,4}
    )
    | # begins with an http scheme followed by a domain, or
    (
        (?<!   # negative look-behind
            [0-9a-zA-Z.@-]
        )
        (
            [0-9a-zA-Z]
            [0-9a-zA-Z_-]*
            \.
        )+
        # top-level domain names
        com|ca|net|org|edu|gov|biz|info|mobi|name|
        us|uk|fr|au|be|ch|de|es|eu|it|tv|cn|jp
    )
""", re.VERBOSE)
Run Code Online (Sandbox Code Playgroud)

更多非ascii域名:

python regex unicode uri character-properties

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

使用类方法作为简单函数

我有一个有很多方法的课.如何修改我的方法,以便它们也可以作为函数直接访问而无需创建该类的对象?可能吗.

python

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

与依赖提供者进行地形改造

在我的 terraform 基础设施中,我根据参数启动多个 Kubernetes 集群,然后使用 kubernetes 提供程序将一些标准内容安装到这些 Kubernetes 集群中。

当我更改参数并且不再需要其中一个集群时,terraform 无法将其拆除,因为提供程序和资源都在模块中。然而,我没有看到替代方案,因为我在同一模块中创建了 kubernetes 集群,并且 kubernetes 对象都是每个 kubernetes 集群的。

我能想到的所有解决方案都涉及在我的 terraform 配置中添加一堆样板。我应该考虑从脚本生成 terraform 配置吗?


我制作了一个 git 存储库,它准确地显示了我遇到的问题:

https://github.com/bukzor/terraform-gke-k8s-demo

kubernetes terraform terraform-provider-kubernetes

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

聚合重复字段的唯一值

我的表中有一个重复的字段。我想运行一个聚合查询并接收与我的查询匹配的唯一值数组。我已经尝试了这个查询的几种不同的变体:

with t as (select * from unnest([
    STRUCT("foo" as name, ["red", "blue"] as color)
  , STRUCT("foo", ["blue"])
  , STRUCT("foo", NULL)
  , STRUCT("foo", ["green"])
  , STRUCT("bar", ["orange", "black"])
  , STRUCT("bar", ["black", "white"])
]))
select
    (select color from unnest(array_concat_agg(color))) as color
from t
group by name
Run Code Online (Sandbox Code Playgroud)

想要的结果是:

name  | color
=====================================
foo   | ["red", "blue", "green"]
bar   | ["orange", "black", "white"]
Run Code Online (Sandbox Code Playgroud)

这个特定的查询给出了Aggregate function ARRAY_CONCAT_AGG not allowed in UNNEST at [10:31],但我在文档中没有找到这个错误,我找不到一个直观的原因为什么会出现这样的限制,也找不到我如何修复这个错误。

我正在做的事情是否本质上需要额外级别的嵌套查询?

sql google-bigquery google-cloud-platform bigquery-standard-sql

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