小编And*_*dré的帖子

“ uniq”后的“ sort”中出现“ is not numeric”错误

use List::MoreUtils 'uniq';
print join ", ", sort uniq ("b", "a", "a");
Run Code Online (Sandbox Code Playgroud)

导致参数“ a”在排序时不是数字...

print join ", ", uniq sort ("b", "a", "a");
Run Code Online (Sandbox Code Playgroud)

可以正常工作。

print join ", ", sort {$a cmp $b} uniq ("b", "a", "a");
Run Code Online (Sandbox Code Playgroud)

也可以工作-但是第一个示例有什么问题?

sorting perl uniq

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

Perl中大哈希表的快速加载

我有大约 30 个具有结构的文本文件

wordleft1|wordright1
wordleft2|wordright2
wordleft3|wordright3
...
Run Code Online (Sandbox Code Playgroud)

这些文件的总大小约为 1 GB,大约有 3200 万行单词组合。

我尝试了几种方法来尽可能快地加载它们并将组合存储在哈希中

$hash{$wordleft} = $wordright
Run Code Online (Sandbox Code Playgroud)

逐文件打开文件并逐行读取大约需要 42 秒。然后我用可存储模块存储哈希

store \%hash, $filename
Run Code Online (Sandbox Code Playgroud)

再次加载数据

$hashref = retrieve $filename
Run Code Online (Sandbox Code Playgroud)

将时间减少到大约 28 秒。我使用快速 SSD 驱动器和快速 CPU,并有足够的 RAM 来保存所有数据(大约需要 7 GB)。

我正在寻找一种更快的方法将这些数据加载到 RAM 中(由于一些原因,我无法将其保留在那里)。

perl hash performance

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

删除4个字节的UTF8字符

我想从字符串中删除以\ xF0(带有ASCII代码0xF0的字符)开头的4字节UTF8字符并尝试

sText = Regex.Replace (sText, "\xF0...", "");
Run Code Online (Sandbox Code Playgroud)

这不起作用.使用两个反斜杠也不起作用.

确切的输入是https://de.wikipedia.org/w/index.php?title=Spezial:Exportieren&action=submit&pages=Unicode的内容4字节字符是文本"[[Violinschlüssel]]"之后的字符,十六进制表示法:.. 0x65 0x6c 0x5d 0x5d 0x20 0xf0 0x9d 0x84 0x9e 0x20 ..预期输出为0x65 0x6c 0x5d 0x5d 0x20 0x20 ..

怎么了?

c# regex utf-8

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

在正则表达式匹配后删除文本的有效方法

假设我想在每个单词后删除一个空格。实际上,空格前的正则表达式更为复杂。

$text =~ s/(\w+) /$1/g;
Run Code Online (Sandbox Code Playgroud)

按预期工作,但我不喜欢需要$1,因为匹配某些内容,将其删除并再次插入似乎效率不高。我尝试了积极的前瞻,但这不起作用:

$text =~ s/(?=\w+) //g;
Run Code Online (Sandbox Code Playgroud)

我知道它不起作用,因为“位置”不会随着这种前瞻而改变。有没有另一种方法可以摆脱$1

regex perl

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

获取文本单词之间的单词和字符

我有一个文本,例如

my $text = "share your knowledge, Q&A-style"
Run Code Online (Sandbox Code Playgroud)

并希望在列表中获取它们之间的单词字符.如果我使用

my (@parts) = $text =~ /(\w+)/g
Run Code Online (Sandbox Code Playgroud)

我明白了

("share", "your", "knowledge", "Q", "A", "style")
Run Code Online (Sandbox Code Playgroud)

现在我想得到以下列表:

("share", "your", "knowledge", ",", "Q", "&", "A", "-", "style")
Run Code Online (Sandbox Code Playgroud)

有没有办法在字符旁边循环遍历文本?

regex perl

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

标签 统计

perl ×4

regex ×3

c# ×1

hash ×1

performance ×1

sorting ×1

uniq ×1

utf-8 ×1