CSV 文件。连续包含 2 个不同的值。如何将它们分开?

问题描述 投票:0回答:1

我有一个质谱(化学)文件。在该文件中,每个轴有 2 个不同的值,例如 x 和 y。但他们都在同一排。那么如何将它们分开。 150-2000 m/z, 123,53,54,23,35,56,68,89,90等 我知道我可以用逗号将值分隔成列,但如何将值 150-2000 更改为数字并像这样分隔列 150 151 152 153 。 。 。 。 。 1999年 2000

提前谢谢

CSV 文件中的一行中有 2 组不同的值,我想将它们分成不同的列。其中一个文件在 150-2000 范围内,那么如何将其转换为简单的数字。

csv export-to-csv opencsv csvhelper
1个回答
0
投票

您可以在

Convert
中使用
ClassMap
将第一列转换为您的
x
y
值。

void Main()
{
    var config = new CsvConfiguration(CultureInfo.InvariantCulture)
    {
        HasHeaderRecord = false
    };
    
    using (var reader = new StringReader("150-2000 m/z,123"))
    using (var csv = new CsvReader(reader, config))
    {
        csv.Context.RegisterClassMap<FooMap>();
        var records = csv.GetRecords<Foo>().Dump();
    }
}

// You can define other methods, fields, classes and namespaces here
public class FooMap : ClassMap<Foo>
{
    FooMap()
    {
        Map(m => m.X).Convert(args =>
        {
            var value = args.Row.GetField(0);
            var beforeDash = value.Split("-")[0];
            
            var canParse = int.TryParse(beforeDash, out int result);
            
            if (canParse)
            {
                return result;
            } 
            else
            {
                return 0;
            }
        });
        Map(m => m.Y).Convert(args =>
        {
            var value = args.Row.GetField(0);
            var afterDash = value.Split("-")[1];
            var beforeSpace = afterDash.Split(" ")[0];

            var canParse = int.TryParse(beforeSpace, out int result);

            if (canParse)
            {
                return result;
            }
            else
            {
                return 0;
            }
        });
        Map(m => m.AnotherNumber).Index(1);
    }
}

public class Foo
{
    public int X { get; set; }
    public int Y { get; set; }
    public int AnotherNumber { get; set; }
}
© www.soinside.com 2019 - 2024. All rights reserved.