小编Igo*_*bin的帖子

如何在R中找到字符串的长度?

如何在不拆分R的情况下找到字符串的长度(字符串中的字符数)?我知道如何找到列表的长度而不是字符串的长度.

那么Unicode字符串怎么样?如何在Unicode字符串中找到长度(以字节为单位)和字符数(符文,符号)?

相关问题:

string unicode r string-length

329
推荐指数
6
解决办法
30万
查看次数

烧瓶:获取当前路线

在Flask中,当我有多个相同功能的路由时,我怎么知道目前使用哪条路由?

例如:

@app.route("/antitop/")
@app.route("/top/")
@requires_auth
def show_top():
    ....
Run Code Online (Sandbox Code Playgroud)

我怎么知道,现在我被称为使用/top//antitop/

UPDATE

我知道request_path我不想使用它,因为请求可能相当复杂,我想在函数中重复路由逻辑.我认为解决方案url_rule是最好的解决方案.

python url flask

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

正则表达式的可变长度lookbehind-assertion替代方案

Python/PHP/JavaScript中是否有正则表达式的实现,它支持可变长度的lookbehind-assertion?

/(?<!foo.*)bar/
Run Code Online (Sandbox Code Playgroud)

如何编写具有相同含义的正则表达式,但不使用lookbehind-assertion?

是否有可能在某一天实施这种类型的断言?

我认为事情要好得多.

更新:

(1)有正则表达式实现已经支持可变长度的lookbehind-assertion.

Python模块正则表达式(非标准re,但附加regex模块)支持这样的断言(并具有许多其他很酷的功能).

>>> import regex
>>> m = regex.search('(?<!foo.*)bar', 'f00bar')
>>> print m.group()
bar
>>> m = regex.search('(?<!foo.*)bar', 'foobar')
>>> print m
None
Run Code Online (Sandbox Code Playgroud)

对我来说,真正意外的是,正则表达式中有些东西是Perl无法做到的,Python也可以.可能,Perl还有"增强的正则表达式"实现吗?

(谢谢和MRAB +1).

(2)\K现代正则表达式中有一个很酷的功能.

这个符号意味着当你进行替换时(从我的角度来看,最有趣的断言用例是替换),所以之前找到的所有字符\K都不能改变.

s/unchanged-part\Kchanged-part/new-part/x
Run Code Online (Sandbox Code Playgroud)

这几乎就像一个后视断言,但当然不是那么灵活.

更多关于\K:

据我所知,你不能在同一个正则表达式中使用\ K两次.而且你不能说你想要"杀死"你找到的角色.这总是直到线的开头.

(谢谢和池上+1).

我的其他问题:

  • 是否可以说最后一点是什么意义\K
  • 如何为Perl/Ruby/JavaScript/PHP增强正则表达式实现?像regexPython 这样的东西.

javascript php python regex perl

42
推荐指数
3
解决办法
6053
查看次数

传递引用的参数时,为什么我会得到"/ bin/sh:参数列表太长"?

可以传递给命令行多长时间sh -c ''?(在bash和bourne shell中)

该限制远低于操作系统的限制(在现代Linux的情况下).

例如:

$ /bin/true $(seq 1 100000)
$ /bin/sh -c "/bin/true $(seq 1 100000)"
bash: /bin/sh: Argument list too long
Run Code Online (Sandbox Code Playgroud)

我怎么能绕过这个问题呢?

更新

我想注意到getconf这里无法帮助(因为这不是系统限制):

$ seq 1 100000 | wc -c
588895
$ getconf ARG_MAX
2097152
Run Code Online (Sandbox Code Playgroud)

更新#2

现在我明白了这里有什么意义.这不是shell限制,即系统限制,但是对于每个参数的长度,而不是整个arglist.

$ /bin/true $(seq 1 100000)
$ /bin/true "$(seq 1 100000)"
bash: /bin/true: Argument list too long
Run Code Online (Sandbox Code Playgroud)

谢谢CodeGnome的解释.

bash shell command-line arguments quoting

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

NaN和Inf之间有什么区别,R和NULL和NA有什么区别?

NaN和Inf之间有什么区别,R和NULL和NA有什么区别?

为什么?NA?NULL告诉我"NA"的长度为"1"而NULL的长度为"0"?

r

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

Perl6:比较运算符~~

我不明白这种行为:

> sort([1,2,3,4]) ~~ sort([1,2,3,4])
False
Run Code Online (Sandbox Code Playgroud)

你能解释一下吗?根据Perl 6,为什么这两个列表(显然相等)不相等.

更新

有趣,但它取决于Perl6版本(我刚刚注意到它):

$ which perl6
/usr/bin/perl6
$ dpkg -S `which perl6`
rakudo: /usr/bin/perl6
$ perl6 --version
This is perl6 version 2015.11 built on MoarVM version 2015.11
$ perl6
> sort([1,2,3]) ~~ sort([1,2,3])
True
> 
$ export PATH=~/.rakudobrew/bin:$PATH
$ perl6 --version
This is Rakudo version 2017.12 built on MoarVM version 2017.12.1
implementing Perl 6.c.
$ perl6
To exit type 'exit' or '^D'
> sort([1,2,3]) ~~ sort([1,2,3])
False
> 
Run Code Online (Sandbox Code Playgroud)

从#perl6的讨论开始:

[19:35] <+committable6> AlexDaniel, 
¦2015.12,2016.01.1,2016.02,2016.03,2016.04,2016.05,2016.06,2016.07.1,2016.08.1,2016.09,2016.10,2016.11,2016.12: …
Run Code Online (Sandbox Code Playgroud)

operators perl6 raku

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

如何在scala中查找文件大小?

我正在写一个scala脚本,需要知道文件的大小.我该怎么做呢?在Python中,我会这样做

os.stat('somefile.txt').st_size
Run Code Online (Sandbox Code Playgroud)

在斯卡拉?

java size scala file

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

Python中的纯虚方法

在Python 中实现纯虚方法的思想正确方法是什么?

只是提高NotImplementedError方法?

或者,还有更好的方法?

谢谢!

python oop inheritance virtual-functions

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

在开发基于组件/环的应用程序时使用emacs/cider的正确方法是什么?

在开发基于组件/环的clojure应用程序时,emacs/cider的正确工作流程/使用途径是什么?

我觉得我可以"附加"到我正在运行的compojure/ring-process,更改其代码,读取/更改其数据,但我无法理解我该如何做到这一点?什么是正确的方法?

我所做的?

lein new compojure my-project
cd my-project
lein ring server-headless
Run Code Online (Sandbox Code Playgroud)

开发服务器现在运行.如果我更改项目中的文件,它们将自动重新加载.那很好.但我想要的是,我直接附加到流程并更改其功能,例如.

我明白这是可能的,但我无法理解.

emacs clojure compojure ring leiningen

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

将引用的Vec转换为值的Vec的惯用方法是什么?

我的函数返回Vec对元组的引用,但我需要一个Vec元组:

use std::collections::HashSet;

fn main() {
    let maxs: HashSet<(usize, usize)> = HashSet::new();
    let mins: HashSet<(usize, usize)> = HashSet::new();
    let intersection = maxs.intersection(&mins).collect::<Vec<&(usize, usize)>>();
}
Run Code Online (Sandbox Code Playgroud)

我该如何进行转换?

错误:

19 |     maxs.intersection(&mins).collect::<Vec<&(usize, usize)>>()
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected tuple, found reference
   |
   = note: expected type `std::vec::Vec<(usize, usize)>`
          found type `std::vec::Vec<&(usize, usize)>`
Run Code Online (Sandbox Code Playgroud)

我正在使用for循环来进行转换,但我不喜欢它,我认为应该有一种模式惯用的方式:

for t in maxs.intersection(&mins).collect::<Vec<&(usize, usize)>>().iter() {
    output.push(**t);
}
Run Code Online (Sandbox Code Playgroud)

iterator reference rust

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