我有几个像这样的字母数字字符串
listOfNum = ['000231512-n','1209123100000-n00000','alphanumeric0000', '000alphanumeric']
Run Code Online (Sandbox Code Playgroud)
删除尾随零的所需输出将是:
listOfNum = ['000231512-n','1209123100000-n','alphanumeric', '000alphanumeric']
Run Code Online (Sandbox Code Playgroud)
前导尾随零的所需输出为:
listOfNum = ['231512-n','1209123100000-n00000','alphanumeric0000', 'alphanumeric']
Run Code Online (Sandbox Code Playgroud)
删除前导零和尾随零的欲望输出将是:
listOfNum = ['231512-n','1209123100000-n00000','alphanumeric0000', 'alphanumeric']
Run Code Online (Sandbox Code Playgroud)
现在我一直按照以下方式进行,如果有以下情况,请建议更好的方法:
listOfNum = ['000231512-n','1209123100000-n00000','alphanumeric0000', \
'000alphanumeric']
trailingremoved = []
leadingremoved = []
bothremoved = []
# Remove trailing
for i in listOfNum:
while i[-1] == "0":
i = i[:-1]
trailingremoved.append(i)
# Remove leading
for i in listOfNum:
while i[0] == "0":
i = i[1:]
leadingremoved.append(i)
# Remove both
for i in listOfNum:
while i[0] == "0":
i …Run Code Online (Sandbox Code Playgroud) 我知道erlang中有string:strip.但它的行为对我来说很奇怪.
A = " \t\n" % two whitespaces, one tab and one newline
string:strip(A) % => "\t\n"
string:strip(A,both,$\n) % string:strip/3 can only strip one kind of character
Run Code Online (Sandbox Code Playgroud)
我需要一个函数来删除所有前导/尾随空白字符,包括空格,\ t,\n,\ r \n等.
some_module:better_strip(A) % => []
Run Code Online (Sandbox Code Playgroud)
erlang有一个功能可以做到这一点吗?或者如果我必须自己做,最好的方法是什么?
这是我的Perl代码用于监视Unix文件夹的样子:
#!/usr/bin/perl
use strict;
use warnings;
use File::Spec::Functions;
my $date = `date`; chomp $date;
my $datef = `date +%Y%m%d%H%M.%S`; chomp $datef;
my $pwd = `pwd`; chomp $pwd;
my $cache = catfile($pwd, "cache");
my $monitor = catfile($pwd, "monme");
my $subject = '...';
my $msg = "...";
my $sendto = '...';
my $owner = '...';
sub touchandmail {
`touch $cache -t "$datef"`;
`echo "$msg" | mail -s "$subject" $owner -c $sendto`;
}
while(1) {
$date = `date`; chomp $date;
$datef …Run Code Online (Sandbox Code Playgroud) 为了编写更清晰的代码......
IO.popen("Generate a list of files").readlines.each{ |line|
chomped_line = line.chomp
# ...
}
Run Code Online (Sandbox Code Playgroud) 我现在正在上课,决定花时间学习Perl.我开头的Perl工作(http://www.perl.org/books/beginning-perl/).我在第三章的结尾完成了练习.
其中一个练习要求我"将您的重要电话号码存储在哈希中.编写一个程序,按人名查找数字."
无论如何,我想出了这个:
#!/usr/bin/perl
use warnings;
use strict;
my %name_number=
(
Me => "XXX XXX XXXX",
Home => "YYY YYY YYYY",
Emergency => "ZZZ ZZZ ZZZZ",
Lookup => "411"
);
print "Enter the name of who you want to call (Me, Home, Emergency, Lookup)", "\n";
my $input = <STDIN>;
print "$input can be reached at $name_number{$input}\n";
Run Code Online (Sandbox Code Playgroud)
它只是不起作用.我一直收到此错误消息:
在串联(.)中使用未初始化的值或在hello.plx第17行第1行使用字符串
我尝试了更多的代码,但每个"解决方案"看起来比之前的"解决方案"更复杂.最后,我决定检查答案.
我的代码和答案之间的唯一区别是chomp ($input);后面的存在<STDIN>;.
现在,作者chomp在之前的例子中使用过,但他并没有真正涵盖chomp正在做的事情.所以,我在www.perlmeme.org上找到了这个答案:
该
chomp()函数将删除(通常)字符串末尾的任何换行符.我们通常说的原因是它实际上删除了与$/(输入记录分隔符)的当前值匹配的任何字符,并$/默认为换行符.
无论如何,我的问题是: …
我正试图摆脱括号[]和新线的\n印刷.
我的代码看起来像:
name1 = File.readlines('first.txt').sample(1)
name2 = File.readlines('middle.txt').sample(1)
name3 = File.readlines('last.txt').sample(1)
name = print (name1.strip
print name2.strip
print name3.strip)
puts name
Run Code Online (Sandbox Code Playgroud)
我希望输出看起来像JoshBobbyGreen.但是,它看起来像:
[\"Josh\\n\"][\"Bobby\\n\"][\"Green\\n\"]
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用.gsub,chomp并split但也许我使用他们错了.
我正在尝试在perl中处理文本文件.我需要将文件中的数据存储到数据库中.我遇到的问题是某些字段包含换行符,这会让我失望.包含这些字段的最佳方法是什么?
示例data.txt文件:
ID|Title|Description|Date
1|Example 1|Example Description|10/11/2011
2|Example 2|A long example description
Which contains
a bunch of newlines|10/12/2011
3|Example 3|Short description|10/13/2011
Run Code Online (Sandbox Code Playgroud)
当前(损坏的)Perl脚本(示例):
#!/usr/bin/perl -w
use strict;
open (MYFILE, 'data.txt');
while (<MYFILE>) {
chomp;
my ($id, $title, $description, $date) = split(/\|/);
if ($id ne 'ID') {
# processing certain fields (...)
# insert into the database (example)
$sqlInsert->execute($id, $title, $description, $date);
}
}
close (MYFILE);
Run Code Online (Sandbox Code Playgroud)
从示例中可以看出,在ID 2的情况下,它会分成几行,在尝试引用这些未定义的变量时会导致错误.你会如何将他们分组到正确的领域?
提前致谢!(我希望问题很清楚,很难定义标题)
所以我在使用while循环遍历套接字时遇到了这个问题.
当我使用它时,它完全正常,但我对每一个都有新行$message,我不想要.
my $socket = new IO::Socket::INET (
LocalHost => "127.0.0.1",
LocalPort => "12345",
Proto => 'tcp',
Listen => 1,
Reuse => 1
);
my $client = $socket->accept();
while(<$client>) {
my $message = $_;
print $message;
}
Run Code Online (Sandbox Code Playgroud)
但是当我添加chomp时,循环仅在我断开客户端时完成(我理解为什么).我的猜测是chomp从$_变量中删除了换行符,因此循环将不再起作用.
my $socket = new IO::Socket::INET (
LocalHost => "127.0.0.1",
LocalPort => "12345",
Proto => 'tcp',
Listen => 1,
Reuse => 1
);
my $client = $socket->accept();
while(<$client>) {
my $message = $_;
chomp($message);
print $message;
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:如何在没有消息中的换行符的情况下遍历套接字(换行符已终止)?
谢谢你!
我在Perl中发现了一个奇怪的chomp行为,我无法理解chomp为什么会像这样工作.
以下行无法按预期工作
if ( chomp($str1) eq chomp($str2) )
Run Code Online (Sandbox Code Playgroud)
但是,以下工作正常
chomp $str1;
chomp $str2;
if ( $str1 eq $str2 )
Run Code Online (Sandbox Code Playgroud)
你能否对chomp的这种行为有所了解?
自从我去Perling已经有几个月了,但我完全不知道为什么会这样......
我是OSX的,如果重要的话.
我正在尝试变换文件中的行
08/03/2011 01:00 PDT,1.11
进入stdout线之类的
XXX, 20120803, 0100, KWH, 0.2809, A, YYY
因为我正在读取一个文件,所以我希望chomp在读完每一行之后.但是,当我chomp,我发现我的打印都搞砸了.当我不chomp打印时很好(除了额外的换行...).这里发生了什么?
while(<SOURCE>) {
chomp;
my @tokens = split(' |,'); # @tokens now [08/03/2011, 01:00, PDT, 1.11]
my $converted_date = convertDate($tokens[0]);
my $converted_time = convertTime($tokens[1]);
print<<EOF;
$XXX, $converted_date, $converted_time, KWH, $tokens[3], A, YYY
EOF
}
Run Code Online (Sandbox Code Playgroud)
通过chomp那里的调用,输出全部混淆:
, A, YYY10803, 0100, KWH, 1.11
没有chomp那里的电话,它至少以正确的顺序打印,但是有了额外的新线:
XXX, 20110803, 0100, KWH, 1.11 , A, YYY
请注意,chomp在那里,它就像在第一行"覆盖"新行一样.我添加了$|=1;autoflush,但不知道还能做什么.
思考?并提前感谢....