小编sni*_*im2的帖子

如何使用正则表达式可移植地解析(Unicode)度符号?

我正在为sensorsUbuntu 上的实用程序输出编写一个简单的正则表达式解析器.这是我正在解析的一行文本的示例:

temp1:        +31.0°C  (crit = +107.0°C)
Run Code Online (Sandbox Code Playgroud)

这是我用来匹配它的正则表达式(在Python中):

temp_re = re.compile(r'(temp1:)\s+(\+|-)(\d+\.\d+)\W\WC\s+' 
                     r'\(crit\s+=\s+(\+|-)(\d+\.\d+)\W\WC\).*')
Run Code Online (Sandbox Code Playgroud)

此代码按预期工作,并与我上面给出的示例文本相匹配.我唯一感兴趣的是数字,所以这一点:

(\+|-)(\d+\.\d+)\W\WC
Run Code Online (Sandbox Code Playgroud)

它通过匹配+-符号开始,并通过匹配来结束°C.

我的问题是,为什么\W要匹配两个(非字母数字)字符°而不是一个?代码是否会在Unicode与我的代表不同的系统上中断?如果是这样,我怎么能让它便携?

python regex unicode portability

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

在轴坐标中查找matplotlib图(包括ticklabels)的范围

我需要在轴坐标中找到包括其相关艺术家(在这种情况下只是刻度和刻度标签)的绘图范围(如matplotlib转换教程中所定义).

这样做的背景是我自动为大量图表创建缩略图(如此SO问题),只有当我可以定位缩略图以使其不会模糊原始图中的数据时.

这是我目前的做法:

  1. 创建一些候选矩形进行测试,从原始绘图的右上角开始向左工作,然后在原始绘图的右下角向左移动.
  2. 对于每个候选矩形:
    1. 使用来自此SO问题的代码将rect的左手侧和右手侧(在轴坐标中)转换为数据坐标,以找到矩形将覆盖的x数据的切片.
    2. 找到矩形覆盖的数据切片的最小/最大y值.
    3. 在数据坐标中找到矩形的顶部和底部.
    4. 使用上述方法,确定矩形是否与任何数据重叠.如果没有,请在当前矩形中绘制缩略图,否则继续.

这种方法的问题在于轴坐标为您提供从(0,0)(轴的左下角)到(1,1)(右上角)的轴的范围,并且不包括刻度线和刻度标签(缩略图没有标题,轴标签,传说或其他艺术家).

所有图表都使用相同的字体大小,但图表具有不同长度的刻度标签(例如1.5或者1.2345 * 10^6),尽管这些在绘制插图之前是已知的.有没有办法将字体大小/点转换为轴坐标?或者,也许有比上面更好的方法(边界框?).

以下代码实现了上述算法:

import math

from matplotlib import pyplot, rcParams
rcParams['xtick.direction'] = 'out'
rcParams['ytick.direction'] = 'out'

INSET_DEFAULT_WIDTH = 0.35
INSET_DEFAULT_HEIGHT = 0.25
INSET_PADDING = 0.05
INSET_TICK_FONTSIZE = 8


def axis_data_transform(axis, xin, yin, inverse=False):
    """Translate between axis and data coordinates.
    If 'inverse' is True, data coordinates are translated to axis coordinates,
    otherwise the transformation is reversed. …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

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

如何为LaTeX列表创建白色黑色样式

我一直在看Philip Bunge关于如何使用LaTeX列表创建"Tango"风格的帖子,并试图调整它以使默认文本样式为白色和背景为黑色(这是幻灯片,而不是文章!).这就是我添加的内容:

\definecolor{Black}{gray}{0.0}
\definecolor{White}{gray}{0.9}
...
\lstset{
  basicstyle=\color{White},
  backgroundcolor=\color{Black},
  ...
}
Run Code Online (Sandbox Code Playgroud)

这假定basicstyle设置所有文本的默认样式.列表文档说明了这一点:

在每个列表的开头选择basicstyle.您可以使用\ footnotesize,\ small,\ itshape,\ ttfamily或类似的东西.最后一个标记不得读取任何后续字符.

此输出仍显示"默认"文本为黑色.可以设置更多样式指令来覆盖给定编程语言中的大多数令牌,但即使这样做,也会遗漏一些令牌(例如括号和其他标点符号).我做错了什么?

latex typesetting listings

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

在盒装特征上实现PartialEq

我有一个Rust程序,它包含许多不同的结构,它们都实现了一个叫做的特征ApplyAction.另一个结构,ActionList包含一个实现的盒装对象的向量ApplyAction.我想创建一些比较ActionLists的单元测试.

有一些不同的SO问题涉及PartialEq盒装特征,我已经用它们来实现一些方法.但是,在下面的(简化)代码(以及Playground)中,断言main()失败,因为传递的对象的类型ID eq()不同.为什么?

此外,对于这样一个简单的用例来说,这似乎非常复杂 - 有更简单的方法吗?

use std::any::TypeId;
use std::boxed::Box;
use std::fmt;
use std::mem::transmute;

#[derive(Debug, Eq, PartialEq)]
pub struct MyAction<T: fmt::Debug> {
    label: T,
}

impl<T: fmt::Debug> MyAction<T> {
    pub fn new(label: T) -> MyAction<T> {
        MyAction { label: label }
    }
}

pub trait ApplyAction<T: fmt::Debug + PartialEq>: fmt::Debug {
    fn get_type(&self) -> TypeId;
    fn is_eq(&self, other: &ApplyAction<T>) -> bool;
}

impl<T: fmt::Debug + …
Run Code Online (Sandbox Code Playgroud)

traits rust

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

具有接口{}和类型断言的多个返回类型(在Go中)

我想知道调用具有多个返回值的函数的正确语法是什么,其中一个(或多个)是类型interface{}.

返回的函数interface{}可以像这样调用:

foobar, ok := myfunc().(string)
if ok { fmt.Println(foobar) }
Run Code Online (Sandbox Code Playgroud)

但是以下代码失败并显示错误multiple-value foobar() in single-value context:

func foobar()(interface{}, string) {
    return "foo", "bar"
}


func main() {
    a, b, ok := foobar().(string)
    if ok {
        fmt.Printf(a + " " + b + "\n") // This line fails
    }
}
Run Code Online (Sandbox Code Playgroud)

那么,正确的调用约定是什么?

interface go

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

什么应该进入Hg存储库的'default'分支?

在使用Mercurial或类似DVCS工具进行版本化的大型Libre Source软件项目中,以下哪项被认为更为传统:

  1. default分支中保留最新的"稳定"版本的软件.标记每个版本,default以便您知道哪个版本已打包为下载.default测试后立即合并补丁.保持命名分支中的新功能等在default下一版本中合并.
  2. 将每个版本保留在命名分支或类似的分支中.default用于保留仅供开发人员或非常愚蠢的人使用的前沿代码.

或者......是否有一些被广泛接受的更好的工作流模式?

versioning version-control workflow mercurial open-source

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

GitHub上最受欢迎的Python回购

根据v3文档我会想到这个:

$ curl https://api.github.com/legacy/repos/search/python?language=Python&sort=forks&order=desc
Run Code Online (Sandbox Code Playgroud)

将按照分叉数的降序返回前100个Python存储库.它实际上返回一个空(json)存储库列表.

这个:

$ curl https://api.github.com/legacy/repos/search/python?language=Python&sort=forks
Run Code Online (Sandbox Code Playgroud)

返回存储库列表(在json中),但其中许多未列为Python存储库.

所以,显然我误解了Github API.检索特定语言的前N个存储库的可接受方法是什么?

json curl github github-api

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

GitLab 页面可以用于审核 mkdocs 项目上的应用程序吗?

这个答案通过@joki前面的问题表明,它可以通过给浏览的文物公开网址部署在GitLab回购来动态环境中的每个活跃的分支。

mkdocs 材料项目尝试这个,我发现了两个问题。

首先,如果 GitLab 存储库在一个组或一个子组中,则.gitlab-ci.yml文件中的 URL需要更像这样:

    environment:
        name: review/$CI_COMMIT_REF_NAME
        url: "$CI_PAGES_URL/-/jobs/$CI_JOB_ID/artifacts/public/index.html"
        auto_stop_in: 1 week
    variables:
        PUBLIC_URL: "$CI_PAGES_URL/-/jobs/$CI_JOB_ID/artifacts/public/"
Run Code Online (Sandbox Code Playgroud)

其次,网站内的相关链接不好用,导致404错误很多,样式文件等东西丢失。也许上面的网址是不正确的,或者也许是site_urlmkdocs.yml需要改变的东西,如:

site_url: !!python/object/apply:os.getenv ["CI_ENVIRONMENT_URL"]
Run Code Online (Sandbox Code Playgroud)

然而,这些都不适合我。

可以在此处找到具有非常小的部署和审查应用程序的最小 MR 。

有没有人有 mkdocs 评论应用程序的工作配方?

gitlab mkdocs gitlab-pages

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

防止org-mode将注释转换为itemize环境

我有一个org-mode文档,我想以PDF格式导出.我正在使用LaTeX列表包生成格式良好的代码清单,在org中看起来像这样:

#+BEGIN_LaTeX
\begin{lstlisting}[language=Java]
    /** Comment comment comment
     * 
     * blah blah blah
     * 
     * @return comment
     */
    public void foo() {
        return;
    }
\end{lstlisting}
#+END_LaTeX
Run Code Online (Sandbox Code Playgroud)

那里的Javadoc评论被org翻译为LaTeX itemize环境,如下所示:

\begin{lstlisting}[language=Java]
    /** Comment comment comment
\begin{itemize}
\item 
\item blah blah blah
\item 
\item @return comment
\end{itemize}
     */
    public void foo() {
        return;
    }
\end{lstlisting}
Run Code Online (Sandbox Code Playgroud)

我怎样才能防止这种情况发生并像我最初写的一样保留Javadoc?如果我用#+BEGIN_SRC,而不是#+BEGIN_LaTeX我所得到的回复是一个verbatim环境,但我想坚持上市,而不是verbatim或因为我已经做了放在一起一组漂亮的花式为它努力铸造.

latex org-mode listings

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

Rust无法在没有注释的情况下推断类型

由于类型错误,下面的代码无法编译error[E0283]: type annotations required: cannot resolve _: std::cmp::Eq。要编译此代码,需要哪种类型的注释?

此示例代码来自一个更大的程序,该程序MyHashGenerator::hash_node()用于哈希AST中的节点(类型T与AST节点中保存的值有关,但不需要AST的定义来重现类型错误)。

use std::hash::Hash;

pub trait HashGenerator<T: Clone + Eq + Hash + ToString> {
    fn hash(&self, msg: &str) -> u64;  // Hash a string.
    fn hash_node(&self) -> u64;  // Hash an AST node.
}

struct MyHashGenerator {}

impl<T: Clone + Eq + Hash + ToString> HashGenerator<T> for MyHashGenerator {
    fn hash(&self, msg: &str) -> u64 {
        0
    }

    fn hash_node(&self) -> u64 {
        // error[E0283]: type …
Run Code Online (Sandbox Code Playgroud)

types rust

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