使用Python和正则表达式清理平面文件-由于CRLF错误,随机记录被分解为部分记录
我正在清理一个以管道分隔的平面文件,遇到了一个问题,我在整个文件中都有随机的CRLF,它将有效记录(预期有24个分隔符)拆分为后续行中的部分记录 这些CRLF的位置似乎是相对随机的,每个记录中这些CRLF的数量各不相同。下面是一个例子: 下面是我看到的(使用一个更简单的3分隔符示例):使用Python和正则表达式清理平面文件-由于CRLF错误,随机记录被分解为部分记录,python,python-3.x,regex,data-cleaning,flat-file,Python,Python 3.x,Regex,Data Cleaning,Flat File,我正在清理一个以管道分隔的平面文件,遇到了一个问题,我在整个文件中都有随机的CRLF,它将有效记录(预期有24个分隔符)拆分为后续行中的部分记录 这些CRLF的位置似乎是相对随机的,每个记录中这些CRLF的数量各不相同。下面是一个例子: 下面是我看到的(使用一个更简单的3分隔符示例): this|is|a|test don't|be alarmed| if|there is|a|broken|record above|this|is|expected this|is|a|test don't|
this|is|a|test
don't|be
alarmed|
if|there
is|a|broken|record
above|this|is|expected
this|is|a|test
don't|be alarmed|if|there
is|a|broken|record
above|this|is|expected
您可以看到,第2行、第3行和第4行都是部分记录,应该是一个包含3个预期分隔符的记录
以下是我希望看到的/我正在努力制作的内容:
this|is|a|test
don't|be
alarmed|
if|there
is|a|broken|record
above|this|is|expected
this|is|a|test
don't|be alarmed|if|there
is|a|broken|record
above|this|is|expected
我这部分的清洁工作的目的是:
this|is|a|test
don't|be
alarmed|
if|there
is|a|broken|record
above|this|is|expected
this|is|a|test
don't|be alarmed|if|there
is|a|broken|record
above|this|is|expected
- 使用以下正则表达式执行此操作:
^(?(.*){24}.*\n(?(.*){24}.*\n)
- (上面第二部分的基本原理是忽略部分记录的最后一行,这样我们就不会在下面的替换中弄乱后续的好行)
非常感谢 逐行读取文件,检查
|
s的计数,如果计数小于X,保留该行,读取下一行,附加到现有行数据,检查计数,必要时重复,一旦计数为X,将该行写入固定文件。如何解析该文件?发布你的代码。CSV文件实际上允许在带引号的字段中使用换行符。与其尝试“修复”文件,不如尽可能修改代码以处理字段中的换行符。另一方面,也许应该修复生成平面文件的代码,并确保文本字段被引用。我怀疑您使用了|而不是,
作为分隔符,因为在您的语言环境中,
是十进制分隔符。