小编kjo*_*kjo的帖子

OCaml:如何从字符串中删除所有非字母字符?

如何从字符串中删除所有非字母字符?

例如

"Wë_1ird?!"  ->  "Wëird"
Run Code Online (Sandbox Code Playgroud)

在Perl中,我会这样做=~ s/[\W\d_]+//g.在Python中,我会使用

re.sub(ur'[\W\d_]+', u'', u"Wë_1ird?!", flags=re.UNICODE)
Run Code Online (Sandbox Code Playgroud)

等等.

AFAICT,Str.regex不支持\W,\d等等(我不知道它是否支持Unicode,但不知何故,我对此表示怀疑).

regex unicode ocaml

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

通过 groupby.apply 创建新列时如何避免临时变量

我想newcol在数据框中创建一个新列df,因为

df.groupby('keycol').apply(somefunc)
Run Code Online (Sandbox Code Playgroud)

显而易见的是:

df['newcol'] = df.groupby('keycol').apply(somefunc)
Run Code Online (Sandbox Code Playgroud)

不起作用:要么df['newcol']最终包含所有nan's (这肯定不是 RHS 评估的结果),要么引发一些异常(异常的详细信息根据somefunc返回的内容而有很大差异)。

我尝试了上述的许多变体,包括类似的东西

import pandas as pd
df['newcol'] = pd.Series(df.groupby('keycol').apply(somefunc), index=df.index)
Run Code Online (Sandbox Code Playgroud)

他们都失败了。

唯一有效的方法是定义一个中间变量:

import pandas as pd

tmp = df.groupby('keycol').apply(lambda x: pd.Series(somefunc(x)))
tmp.index = df.index
df['rank'] = tmp
Run Code Online (Sandbox Code Playgroud)

有没有办法无需创建中间变量即可实现此目的?

(该文档GroupBy.apply几乎没有内容。)

pandas

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

如何获得人类可读的.git / index转储?

简洁版本

如何获得合理详细的,人类可读的转储.git/index


tl; dr版本

我有两个索引文件,myrepo/.git/index并且myrepo-copy/.git/index,根据不同的diff(“二进制文件......不同”)。

我想了解有关两个索引文件如何不同的更多详细信息。

当然,我可以看看二进制内容的差异,但是我对更有意义的东西感兴趣。

因此,我正在寻找一种获取人类可读的转储我可以比较的两个索引文件的方法diff

git

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

为什么git的设计区分"忽略"和"未跟踪"文件?

我理解忽略和未跟踪文件之间的区别,至少在操作上,在git的标准工作流程中.

我很难理解为什么git的设计师觉得这是一个重要的区别.

IOW,为什么他们不去自动跟踪未被.gitignore.git/info/exclude或全局excludesfile规则排除的每个文件?

需要明确的是:我不是在批评git的设计.我确信这是一个非常好的理由,这个被忽视/未跟踪的区别.从设计的角度来看,我只想了解其背后的基本原理.


编辑:让我这样说吧.假设那里有一个工具,让我们称之为twit,git除了它没有"未跟踪"的概念之外,它在各方面都是相同的:文件可以被忽略或跟踪.有人可以形容一个能够清楚显示出git优势的场景twit吗?


EDIT2:我现在意识到,回想起来,在我的问题中隐含的假设"好理由"也是"易于理解"的.然而,这种假设并没有成功.有可能twit只有在使用它一段时间之后才能感知到缺点,这些缺点会导致用户twit改进到最终看起来像的东西git.

git

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

可以使用单个s ///指定迭代替换过程吗?

假设我们想要在第一个既不是也不是的字符之前替换它的000每个实例.101

例如,如果原始字符串是

"0011101TUVW0123ABC0123"
Run Code Online (Sandbox Code Playgroud)

然后所需的替换将产生字符串

"000000000000000TUVW0123ABC0123"
Run Code Online (Sandbox Code Playgroud)

在Perl 5中,假设$_保存输入字符串,那么类似这样的东西就可以了:

'*any* constant you like!' while s/^(0*)1/${1}000/;

这种方法只是继续应用相同的替换规则(s/^(0*)1/${1}000/)直到它"收敛"(即停止改变输入).

我想知道是否存在一个s///替代,使得它的单个应用程序实现相同的结果.(想想单个应用程序s/1/000/g能够替换每次出现的1方式000.)


需要注意的是一个单一的应用程序s/^(0*)1/${1}000/g中,/g尽管如此,只会取代的第一次出现1,导致:

"000001101TUVW0123ABC0123"
Run Code Online (Sandbox Code Playgroud)

regex perl

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

找到第一个> =元素的索引

给定一个有序列表A整数和整数q <= A[-1],我想找到的最小的非负折射率i这样A[i] >= q.

我可以想办法有效地做到这一点(例如使用某种形式的二进制搜索),但是我想知道Python的标准库或numpy/scipy中是否有任何东西可以用来实现它.

(例如,类似于MATLAB interp1函数的东西.)

python numpy scipy

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

如何准确地在错误点向上移动调用堆栈?

我知道这个成语:

eval {
    ...
};

$DB::single = 1 if $@;
Run Code Online (Sandbox Code Playgroud)

...但是,据我所知,如果调试器在eval检测到堆栈中的帧已经太晚之后就停止了,因为它们恰好是错误发生的瞬间.

有没有办法在错误发生时准确地停止调试器,并检查调用堆栈中的帧?

debugging perl

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

为什么来自swipl的反应不一致?

我想了解为什么与之交互swipl似乎不一致.

这是一个典型的例子.假设我查阅了包含以下定义的知识库:

acc_max([H|T], A, Max) :- H  > A, acc_max(T, H, Max).
acc_max([H|T], A, Max) :- H =< A, acc_max(T, A, Max).
acc_max([], A, A).

max([H|T], Max) :- acc_max(T, H, Max).
Run Code Online (Sandbox Code Playgroud)

下面我显示max([0, 1, 2], X).在输入提示符后我的屏幕显示的内容,并点击Enter:

?- max([0, 1, 2], X).
X = 2 ?
Run Code Online (Sandbox Code Playgroud)

(?表示光标的位置.)

请特别注意,解释器的下一个提示尚未出现.

这是我输入后屏幕的样子;:

?- max([0, 1, 2], X).
X = 2 ;
false.

?- ?
Run Code Online (Sandbox Code Playgroud)

现在我终于得到了翻译的提示.

相比之下,下面我显示了max([2, 0, 1], X).在输入提示符后我的屏幕显示的内容,并点击Enter:

?- max([2, …
Run Code Online (Sandbox Code Playgroud)

prolog swi-prolog prolog-toplevel

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

(命名)函数可以内省调用它的名称吗?

假设一个函数已绑定到多个名称(每个名称都在不同的绑定环境中).有没有办法让它找出哪些名称(如果有的话)被用来调用它?

一个简单的例子:

original.name <- function () cat("don't know my name (yet)...\n")
call.thunk <- function (thunk) thunk()
foo <- original.name

foo()
## don't know my name (yet)...
call.thunk(original.name)
## don't know my name (yet)...
Run Code Online (Sandbox Code Playgroud)

在上面的第一个调用中,使用名称调用函数foo; 在第二个中,它被称为名称thunk.是否可以修改函数的主体以便确定此信息?


(这个问题的动机是想要更多地了解R中的内省;我不是要解决任何具体问题.)

r introspection

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

将数据帧返回函数应用于基础数据帧的每一行

玩具示例

假设这base_df是如下所示的微小数据帧:

In [221]: base_df
Out[221]: 
     seed
I S      
0 a     0
  b     1
1 a     2
  b     3
Run Code Online (Sandbox Code Playgroud)

请注意,行base_df具有2级多索引.(此处的部分问题涉及在派生数据帧中"传播"此多索引的值.)

现在,函数fn(在本文末尾给出的定义)将整数seed作为参数,并返回由字符串键1索引的1列数据帧.例如:

In [222]: fn(0)
Out[222]: 
              F
key            
01011  0.592845
10100  0.844266

In [223]: fn(1)
Out[223]: 
              F
key            
11110  0.997185
01000  0.932557
11100  0.128124
Run Code Online (Sandbox Code Playgroud)

我想生成一个新的数据帧,实质上是应用于fn每一行base_df,并垂直连接结果数据帧.更具体地说,期望的结果如下所示:

                  F
I S key            
0 a 01011  0.592845
    10100  0.844266
  b 11110  0.997185
    01000  0.932557
    11100  0.128124
1 a 01101  0.185082
    01110 …
Run Code Online (Sandbox Code Playgroud)

python group-by apply pandas pandas-groupby

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