解析TSV文件我需要解析一个TSV格式的文件(制表符分隔值)。我正在使用正则表达式将文件分解为每一行,但我找不到一种方法来令人满意地解析每一行。现在我有这个:(?("[^"]+")+|[^t]+)但如果该行中的项目有超过2个连续的双引号,它就不起作用。下面是文件格式:每个元素用制表符分隔,如果一个item包含tag,则tag包含双引号,如果一个item包含双引号,则加倍。但有时一个元素包含4个连续的双引号,上面的regex公式将元素拆分分为2个不同的元素。示例:item1ok"item""2""oK"正确解析为2个元素:item1ok和item"2"ok(在修剪不必要的引号之后),但是:item1oK"item""""2oK"被解析分为3个元素:item1ok、item和“2ok(再次修剪后)”。有谁知道如何让正则表达式适合这个?或者TSV有另一种解决方案吗?(我在C#中这样做)。您可以使用TextFieldParser。这在技术上是一个VB程序集,但您可以通过引用Microsoft.VisualBasic.FileIO程序集在C#中使用它。上面链接中的示例甚至显示在制表符分隔的文件上使用它。我建议您查看“FastCSVReader"或"FileHelpers库"而不是尝试构建您自己的CSV/TSV文件解析器(或使用String.Split)。我正在使用第一个,并且对它非常满意(它支持任何分隔符,如逗号、分号、制表符)。您可以尝试使用String.Splitmethod(Char[])方法而不是使用RegEx。不懂C#,不过这样应该可以了(在python中)以上就是C#学习教程:解析TSV文件共享的全部内容,如果对大家有用,需要进一步了解C#学习教程,我希望你会喜欢它Follow—txt='item1okt"item""2""oK"titem1oKt"item""""2oK"tsomethingelse'regex='''(?:#字段定义"((?:[^"]|"")*)"#双引号字段(允许连续的"")|#或([^"]*)#除双引号外的任何字符)#字段结尾(?:$|t)#每个字段后跟一个制表符(最后一个除外)'''r=re.compile(regex,re.X)#现在找到每个匹配项,并将“”替换为“并删除尾随t#删除也是列表中的最新条目(空字符串)columns=[t[0].replace('""','"')ift[0]!=''elset[1].strip()fortinr.findall(txt)][:-1]printcolumns#prints:['item1ok','item"2"oK','item1oK','item""2oK','somethingelse']这篇文章是收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
