标签: chomp

如何删除字符串中的前导和尾随零?蟒蛇

我有几个像这样的字母数字字符串

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)

python string trailing chomp leading-zero

91
推荐指数
3
解决办法
14万
查看次数

如何在Erlang中删除字符串中的所有空白字符?

我知道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有一个功能可以做到这一点吗?或者如果我必须自己做,最好的方法是什么?

string erlang trim strip chomp

10
推荐指数
3
解决办法
9302
查看次数

我们在Perl中有autochomp吗?

这是我的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)

string perl chomp

8
推荐指数
3
解决办法
1311
查看次数

如何一次性清除数组中的每一行?

为了编写更清晰的代码......

IO.popen("Generate a list of files").readlines.each{ |line|
   chomped_line = line.chomp
   # ...
}
Run Code Online (Sandbox Code Playgroud)

ruby arrays chomp

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

关于chomp的澄清

我现在正在上课,决定花时间学习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()函数将删除(通常)字符串末尾的任何换行符.我们通常说的原因是它实际上删除了与$/(输入记录分隔符)的当前值匹配的任何字符,并$/默认为换行符.


无论如何,我的问题是: …

perl chomp

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

如何在Ruby中读取文件时删除换行符

我正试图摆脱括号[]和新线的\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,chompsplit但也许我使用他们错了.

ruby newline line file-read chomp

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

如何在perl中从文件读取的单个字段中处理/存储多行?

我正在尝试在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的情况下,它会分成几行,在尝试引用这些未定义的变量时会导致错误.你会如何将他们分组到正确的领域?

提前致谢!(我希望问题很清楚,很难定义标题)

perl file-io split chomp

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

使用chomp()时打印失败

所以我在使用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)

所以我的问题是:如何在没有消息中的换行符的情况下遍历套接字(换行符已终止)?

谢谢你!

sockets perl loops while-loop chomp

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

chomp in perl没有按预期工作

我在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的这种行为有所了解?

perl chomp

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

为什么Perl的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,但不知道还能做什么.

思考?并提前感谢....

perl chomp

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