一个常见的'Perlism'生成一个列表,作为以这种形式循环的东西:
for($str=~/./g) { print "the next character from \"$str\"=$_\n"; }
在这种情况下,全局匹配正则表达式从字符串返回一个依次为一个字符的列表,$str并将该值赋给$_
取而代之的是正则表达式,split可以以同样的方式或使用'a'..'z',map等等.
我正在调查unpack通过字符串的字段解释生成字段.我总是发现unpack我的大脑工作方式不太直白,我从来没有真正深入挖掘它.
作为一个简单的例子,我要生成一个列表,是从一个字符串中使用解包中的每个元素的一个字符(是的-我知道我能做到这一点split(//,$str)和/./g,但我真的想看看解包可以采用这种方式.. .)
显然,我可以使用字段列表进行解包,unpack("A1" x length($str), $str)但是有没有其他方式看起来像通配?即,我unpack(some_format,$str)可以在列表上下文或循环中调用,以便解压缩将返回格式组中的下一组字符,直到$ str被排除?
我已经阅读了Perl 5.12 Pack pod和Perl 5.12 pack教程以及Perkmonks教程
以下是示例代码:
#!/usr/bin/perl
use warnings;
use strict;
my $str=join('',('a'..'z', 'A'..'Z')); #the alphabet...
$str=~s/(.{1,3})/$1 /g; #...in groups of three
print "str=$str\n\n";
for ($str=~/./g) {
print "regex: = $_\n";
}
for(split(//,$str)) …Run Code Online (Sandbox Code Playgroud) 假设我想传递一个字符串,awk以便一旦我将其分割(在模式上),子字符串就成为关联数组的索引(而不是值).
像这样:
$ awk -v s="A:B:F:G" 'BEGIN{ # easy, but can these steps be combined?
split(s,temp,":") # temp[1]="A",temp[2]="B"...
for (e in temp) arr[temp[e]] #arr["A"], arr["B"]...
for (e in arr) print e
}'
A
B
F
G
Run Code Online (Sandbox Code Playgroud)
是否有一个awkism或gawkism,允许字符串s直接拆分为其组件,这些组件成为索引条目arr?
原因是(更大的图片)我想要这样的东西(伪awk):
awk -v s="1,4,55" 'BEGIN{[arr to arr["1"],arr["5"],arr["55"]} $3 in arr {action}'
Run Code Online (Sandbox Code Playgroud) Perl,Ruby,Python,Javascript/ecmascript,PHP在开源,开放文档,多平台等方面都很相似.
Perl有 http://www.perl.org
Ruby有 http://www.ruby-lang.org
Python有 http://www.python.org
PHP有http://php.net
是否有与其他语言相同的javascript"主页"?当我说"家"时,我指的是官方文档,规范,语言源代码,示例等的首选地.
有没有办法在替换中使用变量作为修饰符?
my $search = 'looking';
my $replace = '"find: $1 ="';
my $modifier = 'ee';
s/$search/$replace/$modifier;
Run Code Online (Sandbox Code Playgroud)
我需要使用哈希数组来使用不同的修饰符进行批量搜索替换.
我正在尝试这个 .NET MS Chart控件.
知道它的人可以告诉我如何在不使用数据绑定的情况下设置轴标签吗?
例如.如果有3列,我正在寻找这样的东西
Chart1.AxisX.Labels = ["First", "Second", "Third"];
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我已经阅读了关于'self'解释的SO帖子,我已经阅读了关于类的Python文档.我想我理解selfPython类中的用法及其中的约定.
但是,对于Python及其成语相对较新,我无法理解为什么有些用self在过程类型函数定义中.例如,在关于整数类型的Python文档中,示例函数是:
def bit_length(self):
s = bin(self) # binary representation: bin(-37) --> '-0b100101'
s = s.lstrip('-0b') # remove leading zeros and minus sign
return len(s) # len('100101') --> 6
Run Code Online (Sandbox Code Playgroud)
更换self用num的相同的功能结果; 即:
def bit_length(num):
s = bin(num) # binary representation: bin(-37) --> '-0b100101'
s = s.lstrip('-0b') # remove leading zeros and minus sign
return len(s) # len('100101') --> 6
Run Code Online (Sandbox Code Playgroud)
没有像__init__我这样的成语,这里为什么self …
我有一个字典,其中包含第二个包含1000个条目的字典.这些条目都是类型为key =的NSStrings key XXX,而value = element XXXwhere XXX是一个介于0之间的数字 - 元素的数量 - 1.(几天前,我询问了包含字典的Objective-C字典.请参考该问题,如果你想要创建字典的代码.)
子字典中所有字符串的总长度为28,670个字符.即:
strlen("key 0")+strlen("element 0")+
//and so on up through
strlen("key 999")+strlen("element 999") == 28670.
Run Code Online (Sandbox Code Playgroud)
如果一个方法枚举了每个键+值对一次且仅一次,则将此非常简单的哈希值视为指示符.
我有一个子程序可以完美地工作(使用块)来访问单个字典键和值:
NSUInteger KVC_access3(NSMutableDictionary *dict){
__block NSUInteger ll=0;
NSMutableDictionary *subDict=[dict objectForKey:@"dict_key"];
[subDict
enumerateKeysAndObjectsUsingBlock:
^(id key, id object, BOOL *stop) {
ll+=[object length];
ll+=[key length];
}];
return ll;
}
// will correctly return the expected length...
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用并发块(在多处理器机器上),我得到一个接近但不完全是预期的28670的数字:
NSUInteger KVC_access4(NSMutableDictionary *dict){
__block NSUInteger ll=0;
NSMutableDictionary *subDict=[dict objectForKey:@"dict_key"];
[subDict
enumerateKeysAndObjectsWithOptions:
NSEnumerationConcurrent
usingBlock: …Run Code Online (Sandbox Code Playgroud) 我需要DSL使用Python 解析文件.DSL文件是一个文本文件,其文本具有带有ABBYY Lingvo使用的标签的特殊标记.
看起来像:
activate
[m0][b]ac·ti·vate[/b] {{id=000000367}} [c rosybrown]\[[/c][c darkslategray][b]activate[/b][/c] [c darkslategray][b]activates[/b][/c] [c darkslategray][b]activated[/b][/c] [c darkslategray][b]activating[/b][/c][c rosybrown]\][/c] [p]BrE[/p] [c darkgray] [/c][c darkcyan]\[?ækt?ve?t\][/c] [s]z_activate__gb_1.wav[/s] [p]NAmE[/p] [c darkgray] [/c][c darkcyan]\[?ækt?ve?t\][/c] [s]z_activate__us_1.wav[/s] [c orange] verb[/c] [c darkgray] [/c][b]{{cf}}\~ sth{{/cf}} [/b]
[m1]{{d}}to make sth such as a device or chemical process start working{{/d}}
[m2][ex][*]• [/*][/ex][ex][*]{{x}}The burglar alarm is activated by movement.{{/x}} [/*][/ex]
[m2][ex][*]• [/*][/ex][c darkgray] [/c][ex][*]{{x}}The gene is activated by a specific protein.{{/x}} [/*][/ex]
{{Derived Word}}[m3][c darkslategray][u]Derived Word:[/u][/c] ?<<activation>>{{/Derived Word}} …Run Code Online (Sandbox Code Playgroud) 我冒险进入python,我有一个关于星号的问题.我知道它们用于函数调用中的参数,但是我已经看到了在函数卡之外使用它们的代码片段(例如,在5个等级的元组中,将它们解压缩为变量,例如:
first, *middle, last = grades
每当我尝试在函数调用的参数中使用此上下文/上下文中的星号时,我在解释器中获得了无效的语法.我在这里错过了什么吗?
给定一个任意字符串(即,不基于模式),请说:
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
Run Code Online (Sandbox Code Playgroud)
我试图基于索引列表分区字符串.
这是我尝试过的,它确实有效:
import string
def split_at_idx(txt, idx):
new_li=[None]*2*len(idx)
new_li[0::2]=idx
new_li[1::2]=[e for e in idx]
new_li=[0]+new_li+[len(txt)]
new_li=[new_li[i:i+2] for i in range(0,len(new_li),2)]
print(new_li)
return [txt[st:end] for st, end in new_li]
print(split_at_idx(string.ascii_letters, [3,10,12,40]))
# ['abc', 'defghij', 'kl', 'mnopqrstuvwxyzABCDEFGHIJKLMN', 'OPQRSTUVWXYZ']
Run Code Online (Sandbox Code Playgroud)
拆分基于索引列表[3,10,12,40].然后需要将此列表转换为开始,结束对的列表[[0, 3], [3, 10], [10, 12], [12, 40], [40, 52]].我使用切片分配来设置平均值和赔率,然后将列表理解分组成对,并使用第二个LC来返回分区.
对于这样一个简单的函数来说,这似乎有点复杂.有没有更好/更有效/更惯用的方式来做到这一点?
python ×4
idioms ×2
perl ×2
python-3.x ×2
.net ×1
arrays ×1
awk ×1
enumeration ×1
gawk ×1
javascript ×1
markup ×1
modifier ×1
objective-c ×1
parsing ×1
reference ×1
regex ×1
self ×1
string ×1
substitution ×1
tags ×1
unpack ×1
variables ×1