首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

一个小疑点:把八个字符两两分开

2012-03-03 
一个小问题:把八个字符两两分开。有一个字符串,例如十六进制数字:4EA11802能否使用split函数两位两位的拆分

一个小问题:把八个字符两两分开。
有一个字符串,例如十六进制数字:4EA11802
能否使用split函数两位两位的拆分开?拆分成:4E,A1,18,02。

多分酬谢哦!

[解决办法]
reference上没看到split有这功能吧?
网上倒找到几个方法,估计你也都google过了吧

Python code
def splitCount(s, count):     return [''.join(x) for x in zip(*[list(s[z::count]) for z in range(count)])]     c'4EA11802'splitCount(c,2)['4E', 'A1', '18', '02']def split_len(seq, length):    return [seq[i:i+length] for i in range(0, len(seq), length)]    split_len(c,2)['4E', 'A1', '18', '02']def chunks(l,n):    for i in xrange(0,len(l),n):        yield l[i:i+n]        list(chunks(c,2))['4E', 'A1', '18', '02']
[解决办法]
Python code
>>> def splitCount(s, count):...      return [''.join(x) for x in zip(*[list(s[z::count]) for z in range(count)])]...      >>> c'4EA11802'>>> splitCount(c,2)['4E', 'A1', '18', '02']>>> def split_len(seq, length):...     return [seq[i:i+length] for i in range(0, len(seq), length)]...     >>> split_len(c,2)['4E', 'A1', '18', '02']>>> def chunks(l,n):...     for i in xrange(0,len(l),n):...         yield l[i:i+n]...         >>> list(chunks(c,2))['4E', 'A1', '18', '02']
[解决办法]
[code=Python][/code]
s = '4EA11802'
list = [ s[i:i+2] for i in range(0,len(s),2) ]
[解决办法]
Python code
s = '4EA11802'list = [ s[i:i+2] for i in range(0,len(s),2) ]
[解决办法]
[Quote=引用:]

[code=Python][/code]
s = '4EA11802'
list = [ s[i:i+2] for i in range(0,len(s),2) ]
[/Quote]
这个方法不错!
[解决办法]
探讨
Python code

s = '4EA11802'
list = [ s[i:i+2] for i in range(0,len(s),2) ]

[解决办法]
探讨
引用:
Python code

s = '4EA11802'
list = [ s[i:i+2] for i in range(0,len(s),2) ]

人家要的是使用split()函数的:
Python code

#coding=utf-8
s = '4EA11802'
slist = []
for i in range(0……

[解决办法]
为什么非要用split函数啊?

Perl code
my $str = "4EA11802";my @list;my $i = 0;for($i=0; $i<length($str); $i+=2){    push(@list, substr($str, $i, 2));}foreach(@list){    print;    print "\n";}
[解决办法]
@result = split /[0-9a-f]{2}/,$str;

可能还有点问题,抛砖引玉了。


[解决办法]
探讨

有用perl实现的吗?都可以,都有分哦!

[解决办法]
Perl code
@x = '4EA11802' =~ /../g;
[解决办法]
探讨

Perl code
@x = '4EA11802' =~ /../g;

没看到有简单的split的方法。

[解决办法]
用push+re很容易,
Perl code
perl -le '$str="4EA11802"; while($str=~/../g){push @array,$&};print $_ foreach @array'        4EA11802 


[解决办法]

探讨
引用:
引用:
Python code

s = '4EA11802'
list = [ s[i:i+2] for i in range(0,len(s),2) ]

人家要的是使用split()函数的:
Python code

#coding=utf-8
s = '4EA11802'
slist……

[解决办法]
探讨
引用:
引用:
引用:
Python code

s = '4EA11802'
list = [ s[i:i+2] for i in range(0,len(s),2) ]

人家要的是使用split()函数的:
Python code

#coding=utf-8
……

[解决办法]
Perl code
#!/usr/bin/perl -wuse strict;print "$_\n" for grep{$_}split /(..)/,'ABCDEFGH';
[解决办法]
探讨

Perl code

#!/usr/bin/perl -w
use strict;
print "$_\n" for grep{$_}split /(..)/,'ABCDEFGH';

[解决办法]
正则表达式实现,个人认为才是王道。

热点排行