小编lap*_*ira的帖子

Python 正则表达式 findall 或

我正在编译以下模式:

pattern = re.compile("media.+\.(aac|ts)")
Run Code Online (Sandbox Code Playgroud)

我的想法是获取包含在字符串中的 .ts 和 .aac 媒体文件。媒体文件名可以是 media-u9xuxtkay_213.aac 或 media-u9xuxtkay_213.ts

根据这个接受的答案Python 正则表达式 OR你可以使用 ( | ) 作为 OR 但我不明白这是一个被接受的答案,因为它似乎对我有用:

In [23]: s
Out[23]: 'Sent from my iPhone'

In [24]: patt = re.compile("Sent from my (iPhone|iPod)")

In [25]: patt.findall(s)
Out[25]: ['iPhone']
Run Code Online (Sandbox Code Playgroud)

所以我打电话给 findall ,我得到了这个:

In [37]: media
Out[37]: 'media-u9xuxtkay_213.aac'

In [38]: pattern = re.compile("media.+\.(aac|ts)")

In [39]: pattern.findall(media)
Out[39]: ['aac']
Run Code Online (Sandbox Code Playgroud)

我应该得到一个 media-u9xuxtkay_213.aac 而不是 aac。接受的答案应该以同样的方式从我的 iPhone 返回 Sent 而不是 iPhone

python regex

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

如何将基于类的任务传递给CELERY_BEAT_SCHEDULE

正如在docs类中看到的那样,任务是表达复杂逻辑的公平方式.

但是,文档没有指定如何将基于闪亮的新创建的基于类的任务添加到您CELERY_BEAT_SCHEDULE(使用django)

我尝试过: celery.py

app.autodiscover_tasks(lambda: settings.INSTALLED_APPS, 'task_summary')
@app.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):
    from payments.tasks.generic.payeer import PayeerPaymentChecker
    from payments.tasks.generic.ok_pay import OkPayPaymentChecker

    okpay_import = OkPayPaymentChecker()
    payeer_imprt = PayeerPaymentChecker()

    sender.add_periodic_task(60.0, okpay_import.s(),
                             name='OkPay import',
                             expires=30)

    sender.add_periodic_task(60.0, payeer_imprt.s(),
                             name='Payeer import',
                             expires=30)
Run Code Online (Sandbox Code Playgroud)

- 要么 -

payments/task_summary.py

from tasks.generic.import import OkPayPaymentChecker, PayeerPaymentChecker
 run_okpay = OkPayPaymentChecker()
 run_payeer = PayeerPaymentChecker()

CELERY_BEAT_SCHEDULE = {
# yes, i did try referring to the class here
'check_okpay_payments': {

    'task': 'payments.tasks.task_summary.run_okpay',
    'schedule': timedelta(seconds=60),
},
'check_payeer_payments': {
    'task': 'payments.task_summary.run_payeer',
    'schedule': timedelta(seconds=60), …
Run Code Online (Sandbox Code Playgroud)

python django celery celerybeat class-based-tasks

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

Elixir operator~w(列表)

我正在按照这个例子练习elixir https://github.com/seven1m/30-days-of-elixir/blob/master/04-list.exs

我试图在文档中找到~W但是找不到它

ExUnit.start

defmodule ListTest do
  use ExUnit.Case

  def sample do
    ["Tim", "Jen", "Mac", "Kai"]
  end

  test "sigil" do
    assert sample == ~w(Tim Jen Mac Kai)
  end
end
Run Code Online (Sandbox Code Playgroud)

那么~w(Tim Jen Mac Kai)在这个测试中做什么呢?

elixir

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

通过模板访问外部关系字段

假设我在凤凰应用程序中拥有此模型.

defmodule Rumbl.Video do
  use Rumbl.Web, :model

  schema "videos" do
    field :url, :string
    field :title, :string
    field :description, :string
    belongs_to :user, Rumbl.User
    belongs_to :category, Rumbl.Category

    timestamps()
  end

  @required_fields ~w(url title description)
  @optional_fields ~w(category_id)

  def changeset(model, params \\ :empty) do
    model
    |> cast(params, @required_fields, @optional_fields)
  end

end
Run Code Online (Sandbox Code Playgroud)

类别字段表示与Category模型的关系,该模型具有名为name的字段.

然后在模板中我有这个:

<%= for video <- @videos do %>
    <tr>
      <td><%= video.user_id %></td>
      <td><%= video.url %></td>
      <td><%= video.title %></td>
      <td><%= video.description %></td>
      <td><%= video.category_id %></td>

      <td class="text-right">
        <%= link "Show", to: video_path(@conn, :show, video), …
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework

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

将地图列表转换为一张地图

像这样的地图列表如何将some_maps = [%{"test" => [1]}, %{"test2" => [2]}, %{"test" => [3]}]其值合并为一张巨大的单一地图?

single_map = %{"test" => [1, 3], "test2" => [2]}
Run Code Online (Sandbox Code Playgroud)

由于我无法在迭代中修改地图,就像for我不知道如何构建该地图

用其他语言,我将定义一个空的地图并遍历列表并填充该地图,但从功能上来说,我认为我看不到该怎么做。

elixir

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

用于模块属性的 Elixir 元编程

我有这个模块

defmodule ElixirMeta.LangLoader do

  @external_resource [Path.join([__DIR__, "es.json"]),
                      Path.join([__DIR__, "en.json"])]

  defmacro __using__(_) do
    for lang <- ["es", "en"] do
      {:ok, body} = File.read(Path.join([__DIR__, "#{lang}.json"]))
      {:ok, json} = Poison.decode(body)
      quote do
        def lang(unquote(lang)), do: unquote(Macro.escape(json))
      end
    end
  end
end

defmodule ElixirMeta.Lang do
  use ElixirMeta.LangLoader
end
Run Code Online (Sandbox Code Playgroud)

我知道我可以定义一个函数,如:

def lang(unquote(lang)), do: unquote(Macro.escape(json))
Run Code Online (Sandbox Code Playgroud)

并且可以这样调用:

Lang.lang("es")
Run Code Online (Sandbox Code Playgroud)

甚至修改它的函数名,像这样:

def unquote(:"lang_#{lang}")(), do: unquote(Macro.escape(json))
Run Code Online (Sandbox Code Playgroud)

并像这样被调用:

Lang.lang_es
Run Code Online (Sandbox Code Playgroud)

但是可以对模块属性做同样的事情吗?

并且作为模块属性编译(?)我认为不可能从宏初始化它?也许我必须在before_compile宏中做到这一点?

出于示例的目的,我想访问Lang.lang_es作为 a@lang_es@lang_en LangLoader属性

macros metaprogramming elixir

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

通过列表项之一加入列表列表

我有这个列表结构列表:

[
  ["nginx-66b6c48dd5-25wv5", "nginx-deployment", "worker-1", "0", "2"],
  ["nginx-66b6c48dd5-2nhbs", "nginx-deployment", "worker-1", "0", "2"],
  ["nginx-66b6c48dd5-5b4dw", "nginx-deployment", "worker-1", "0", "2"],
  ["nginx-66b6c48dd5-p7sx9", "nginx-deployment", "worker-1", "0", "2"],          
  ["coredns-autoscaler-76f8869cc9-gd69j", "kube-system", "worker-1", "1", "5"],
  ["coredns-55b58f978-q2skn", "kube-system", "worker-1", "7", "11"] 
]
Run Code Online (Sandbox Code Playgroud)

我想通过第二个列表项(nginx-deployment、kube-system 等)合并它们,并将两个最新的项目相加并删除第一个项目。

所以它看起来像这样:

[
  ["nginx-deployment", "worker-1", "0", "8"],
  ["kube-system", "worker-1", "8", "16"] 
]
Run Code Online (Sandbox Code Playgroud)

Enum.zip 有点工作,但我必须首先拆分子列表,我认为必须有更好的方法来做到这一点。

elixir

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

模块 Ecto.Query 未加载且无法找到

我正在尝试按照 Programming Phoenix 的书中的示例练习通过 elixir shell 导入 Ecto.Query,它给了我这个错误

iex> import Ecto.Query

** (CompileError) iex:3: module Ecto.Query is not loaded and could not be found
Run Code Online (Sandbox Code Playgroud)

有人知道这是否已被弃用或是否有其他方式导入它?

elixir phoenix-framework

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