gpt4 book ai didi

string - 如何强制 Text::CSV 将数字存储为文本?

转载 作者:行者123 更新时间:2023-12-04 11:32:01 25 4
gpt4 key购买 nike

我正在编写一些 perl 代码,使用 Text::CSV 模块从数据库中的记录创建一个 .csv 文件。有时,我的表中的一个或多个字段将包含多个重复的 0,这些 0 将作为单个 0 写入 CSV。我试图找出如何将数字强制为文本格式,以便所有 0从这些领域将保持原样。

    use Text::CSV_XS;

sub write_file {
my ($self, %params) = @_;

my $fh = $params{fh};

.. do stuff
.. get database rows

my $csv = Text::CSV_XS->new({ sep_char => ',' });

for my $row (@$rows) {
my @fields = (
$row->{name},
$row->{address},
$row->{code}
);

$csv->combine(@fields);

print $fh $csv->string . "\r\n"
or die 'Write error.';
}
使用这种方法,大多数时候一切都很好。但是,当代码显示为“00000”时,它会被截断并在我的 CSV 中写为“0”。
我调查过 $csv->types ,但这仅允许在解析期间解码时定义类型。
我还尝试使用 $csv->quote(@fields) 将字段括在引号中,没有运气。

最佳答案

引用 always_quote()强制引用组合字段

use Text::CSV_XS;
my $csv = Text::CSV_XS->new( { sep_char => ',' } );

my @fields = ( "0", "00", "000" );

$csv->combine(@fields);
print $csv->string . "\n";

$csv->always_quote(1);
$csv->combine(@fields);
print $csv->string . "\n";
这导致
0,00,000
"0","00","000"

关于string - 如何强制 Text::CSV 将数字存储为文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66666872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com