【问题标题】:perl splitting function exception conditions [closed]perl拆分函数异常条件[关闭]
【发布时间】:2013-09-19 20:53:24
【问题描述】:

我需要在 perl 中拆分。请看下面的例子:

"john","David2,mick",25,"12-12-2009","male"

我必须在每个不在引号内的逗号 (,) 上拆分此记录。

预期输出是:

john 
david2mick 
25 
12-12-2009
male

你能帮我解决这个问题吗?

【问题讨论】:

标签: regex perl


【解决方案1】:

这是一个 CSV 文件。最好使用 Text::CSV 模块

use Text::CSV;
my $line = '"john","David2,mick",25,"12-12-2009","male"';
my $csv = Text::CSV->new();
$csv->parse($line);
my @columns = $csv->fields();

【讨论】:

  • @mpapec,谢谢,已更正。
【解决方案2】:

您可以使用Text::ParseWords,它是 Perl 5 中的核心模块。它是Text::CSV 的轻量级选项,假设这不是您在此处拥有的正确 csv 数据。

use strict;
use warnings;
use Data::Dumper;
use Text::ParseWords;

my $str = qq("john","David2,mick",25,"12-12-2009","male");
my @list = quotewords(',', 0, $str);

print Dumper \@list;

输出:

$VAR1 = [
          'john',
          'David2,mick',
          '25',
          '12-12-2009',
          'male'
        ];

【讨论】:

  • 拆分后,可以遍历列表以删除逗号:s/,//g for @list;
  • @PlatinumAzure: tr/,//d for @list
  • 朋友们,感谢大家的帮助。我能够实现我的输出。
  • @David 如果您对答案感到满意,您可以通过单击复选标记接受其中一个。
猜你喜欢
  • 2019-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-26
  • 2011-08-01
  • 1970-01-01
相关资源
最近更新 更多