想改进这个问题吗?通过编辑这篇文章添加细节并澄清问题。
我有一个制表符分隔的文本文件,其中包含以下格式的行:
I000001\t I000002\t"Blah blah blah. Blah. Blah Blah"
我试图将每个标签上的每一行拆分,所以上面的行将被分成三部分
当没有空格或引号时,我可以根据需要拆分每一行,但当有空格或引号时,我会遇到困难。
这是我用类似于上面的一行尝试过的:
var x = from lines in data
.Where(l => !string.IsNullOrEmpty(l))
.Select(l => l.Split('\t'))
select new
{
A = lines[0].Trim(),
B = lines[1].Trim(),
C = lines[2].Trim()
};
上面生成一个带有索引[0]、[1]、[2]的数组。每个索引都有三个由上述字符串组成的成员(见下图)。它应该只有一个包含三个成员的索引。
注意数组中的第一个项如何包含三个元素。数组中还有两个项目,在第一个项目的下面。它们都有3个元素,这三个元素包含字符串的其余部分,该字符串用双引号括起来。
解决方案:
根据所选答案,引用中的句子中有额外的选项卡,导致将其他项目添加到数组中。为了解决这个问题,我使用了改编自此答案的正则表达式:
line = Regex.Replace(line, @"""[^""]+""", m => m.Value.Replace('\t', ' '));
我建议使用此代码:
var data = new[] {"I000001 \t I000002 \t \"Blah blah blah. Blah. Blah Blah\""};
var x = from lines in data
select (from s in lines.Split('\t')
where !string.IsNullOrEmpty(s)
select s.Trim())
.ToArray();
在此示例中,只有一个制表符分隔的字符串,但如果您的输入数组中有更多的字符串,则x将是字符串数组的枚举,由制表符分隔的子项组成。
如果您使用的是Split('\t')
,这将在每个制表符上拆分...因此,如果您的文本行按您所说的那样拆分,那么它们中必须有制表符(在“”标记之间的文本中)。请选中此项...如果您这样做了,您可以在运行Linq查询之前使用正则表达式仅删除出现在引号内的制表符。
使用Microsoft. VisualBasic. FileIo. Textfield dParser并将分隔符设置为\t
。
这实际上是一个非常常见的问题,但是人们通常会问逗号,而不是制表符。
我试图实现的是从Excel工作表(保存在Txt中,制表符分隔)中逐行读取数据,并且每个单独的列都是我想要存储在数组中的不同数据。 我尝试了不同的方法..我甚至从网上下载了CSVReader class,但它不能用。至少这次它读的是真实的人物,而不是讽刺。 我现在的版本是使用bufferedReader和String Tokenizer。但它没有正确阅读。 下面是代码: for(int i =0;
我想像下面这样拆分这个字符串: {“我喜欢一个”、“橘子”、“以及”、“苹果”、“但主要是”、“苹果”、“苹果”,“苹果”,“橘子”,“是最好的水果。”} 在上面,我已经拆分了基于水果橙和苹果的字符串,但这两个水果也是子字符串列表的一部分。
正如标题所说,我想知道在Java中是否有使用数组格式化字符串的简便方法。 让我举一个kotlin的例子。 以上代码运行良好。那么Java呢? 对不起,我没有清楚地描述我的问题。当我遇到我的真实案例时,我发现我的代码现在无法工作。 事实上,模板是从文件中读取的。 和模板。txt文件包含: 如您所见,我想读取文件,然后格式化结果。 另外,对于这个问题我很抱歉。因为它似乎被更改为如何格式化从文件中读取的
问题内容: 我的文件包含用制表符(“ \ t”)分隔的值。我正在尝试创建一个列表,并将文件的所有值存储在列表中。但是我遇到了一些问题。这是我的代码。 只要每个值之间只有一个制表符,它就可以正常工作。但是,如果标签不止一个,则它将标签也复制到值。就我而言,额外的标签通常位于文件中的最后一个值之后。 问题答案: 您可以在这里使用: 更新: 您可以 用来摆脱尾随,然后应用正则表达式。
我在使用Pandas读取选项卡分隔的文件时遇到问题。 所有单元格值都有双引号,但对于某些行,有一个额外的双引号打断了整个过程。例如: 我得到的错误是:错误标记数据。C错误:第8355行预期有31个字段,SAW58 我使用的代码是: 它适用于其余文件,但不适用于出现额外双引号的文件。
目前,我正在逐行读取由制表符分隔的文件,将每行中的项目拆分,并通过硬编码值50查找由50个项目组成的制表符分隔的行,然后创建数据表。 问题:以制表符分隔的源文件在拆分后有时有50或53项以制表符分隔的行。需要直接读取以制表符分隔的源文件中具有最大制表符分隔符的行,然后继续我的逻辑。 我的C代码