我有一个制表符分隔的文件,其中一列偶尔有未转义的新行(用引号括起来):
JOB REF Comment V2 Other
1 3 45 This was a small job NULL sdnsdf
2 4 456 This was a large job and I have to go onto a new line,
but I didn't properly escape so it's on the next row whoops! NULL NULL
3 7 354 NULL NULL NULL
# dat <- readLines("the-Dirty-Tab-Delimited-File.txt")
dat <- c("\tJOB\tREF\tComment\tV2\tOther", "1\t3\t45\tThis was a small job\tNULL\tsdnsdf",
"2\t4\t456\tThis was a large job and I have\t\t", "\t\"to go onto a new line, but I didn't properly escape so it's on the next row whoops!\"\tNULL\tNULL\t\t",
"3\t7\t354\tNULL\tNULL\tNULL")
我知道这可能是不可能的,但是这些错误的换行符只出现在一个字段(第10列)。我对R(首选)或python的解决方案感兴趣。在
我的想法是引入一个正则表达式,在10个标签后寻找新行。我首先使用readLines
并尝试删除空格+单词末尾出现的所有换行:
但似乎很难逆转readLines
的线结构。我该怎么办?在
编辑:有时会出现两行换行(即用户在注释字段的段落之间放置了一个空行。下面是一个例子(期望的结果是,这应该被做成一行)
140338 28855 WA 2 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1 NULL NULL NULL NULL NULL NULL NULL NULL 1000 NULL NULL NULL NULL NULL NULL YNNNNNNN (Some text with two newlines)
The remainder of the text beneath two newlines NULL NULL NULL 3534a NULL email NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
不需要正则表达式
这是我用Python语言给出的答案。在
对于您真正的计划:
^{pr2}$编辑:我修改了这个,并添加了更多的评论。我想我也解决了你看到的问题。在
当我将一行连接到
cur
时,我没有首先从cur
的末尾去掉新行。所以,连接的行仍然是一个拆分行,当它被写到文件中时,这并不能真正修复问题。现在就试试吧。在我重新处理了测试数据,这样测试线就有了新行。我最初的测试将输入拆分成新行,因此拆分的行不包含任何换行。现在这些线将以新行结束。在
相关问题 更多 >
编程相关推荐