首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CSV文件。在一行中包含两个不同的值。怎么把他们分开?

CSV文件。在一行中包含两个不同的值。怎么把他们分开?
EN

Stack Overflow用户
提问于 2022-11-23 11:14:16
回答 1查看 18关注 0票数 0

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

事先鸣谢

从CSV文件的一行中有两个不同的值集,我想将它们分隔成不同的列。其中一个文件在150-2000的范围内,所以如何把它转换成简单的数字。

EN

回答 1

Stack Overflow用户

发布于 2022-11-23 16:16:44

可以在Convert中使用ClassMap将第一列转换为xy值。

代码语言:javascript
运行
复制
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; }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74545899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档