首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析TSV文件

解析TSV文件
EN

Stack Overflow用户
提问于 2010-03-09 16:47:48
回答 4查看 11.4K关注 0票数 4

我需要解析一个TSV格式的文件(选项卡分隔值)。我使用regex将文件分解为每一行,但无法找到令人满意的正则表达式来解析每一行。现在我想出了这个问题:

代码语言:javascript
复制
(?<g>("[^"]+")+|[^\t]+)

但是,如果一行中的项有超过两个连续的双引号,则不起作用。

文件的格式化方式如下:每个元素都由一个制表分隔。如果一个项目包含一个选项卡,它会被双引号包围。如果一个项目包含双引号,它将加倍。但有时一个元素包含4个相关的双引号,上面的正则表达式将元素拆分成两个不同的元素。

示例:

item1ok“项目”“2”“oK”

正确地将其解析为两个元素:item1ok项“2”ok(在对不必要的引号进行修整后),但是:

item1oK“项目”2oK“

将其解析为三个元素:item1okitem"2ok (重新修剪后)。

有谁想过如何让这个案子适合这个案子吗?还是有另一种简单解析TSV的解决方案?(我在C#上做这个)。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-03-09 16:55:48

你可以用TextFieldParser。这在技术上是一个VB程序集,但是即使在C#中也可以通过引用Microsoft.VisualBasic.FileIO程序集来使用它。

上面链接处的示例甚至显示了在选项卡分隔的文件上使用它。

票数 8
EN

Stack Overflow用户

发布于 2010-03-09 16:51:37

与其尝试构建您自己的CSV/TSV文件解析器(或使用String.Split),我建议您查看一下"快速CSV阅读器“或"FileHelpers库”。

我使用的是第一个,并且对它非常满意(它支持任何分隔字符,例如逗号、分号、制表符)。

票数 6
EN

Stack Overflow用户

发布于 2010-03-09 16:51:02

不使用RegEx,也许可以尝试[String.Split方法(Char[]) ](http://msdn.microsoft.com/en-us/library/aa904305(VS.71%29.aspx)方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2410788

复制
相关文章

相似问题

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