在处理日常工作中,经常会遇到需要从各种格式的文档(如HTML、文本文件等)中提取有用数据的情况。这些数据可能因为格式不规范、内容杂乱无章而难以直接使用。为了解决这个问题,开发了一款名为“文本提取工具”(Text TakeOut)的程序,它可以帮助快速从这些文档中提取出需要的数据,并将其导出为CSV文件格式,方便后续的数据处理和分析。
这个项目的灵感来源于收到的一个包含超过100个外部故障工单的HTML文档。相信不是唯一一个收到此类文件的人,而且需要利用其中的数据。定义需要的字段并将其导出到一个通用格式是一直在寻找的解决方案。文本提取工具在某些情况下可以是一个强大的解决方案。
在文本提取工具中,ExtractSet
和CSV
类是核心组件。ExtractSet
类用于存储数据,它非常适合使用System.Collections.Generic.List
或其他易于迭代的对象。
在ExtractSet
中,startvalue
代表希望提取的数据的开始字符串标签,而endvalue
代表结束字符串标签。例如,在项目主源文件夹中包含的示例文件“Example ExtractFile.txt”中,有一个希望提取的重复值,但当前的格式是"FGH123", "IJK156"等。第一个ExtractSet
将是:
startvalue="", endvalue="", fieldnamevalue="故障工单编号"
接下来,在实际的原始文档中,故障工单编号的描述被如下包围:
startvalue="", endvalue="", fieldnamevalue="描述"
在工具应用程序中,"添加->"按钮将在定义了所有必要的字段以创建ExtractSet
之后才会启用。该应用程序实际上使用List<ExtractSet>
来存储用户定义的查找和替换规则。发现这对于需要保持在一起的破碎HTML标签集非常有用,以便在迭代开始时不会错过任何数据。
应用程序的查找和替换功能可以在迭代ExtractSet
定义之前准备完整的字符串。例如,在处理的一个原始文档中,必须对主字符串进行预处理:
C# tempcopy = tempcopy.Replace("\n Entered:", "Entered:");
tempcopy = tempcopy.Replace("\n Entered:", "Entered:");
tempcopy = tempcopy.Replace("\n Entered:", "Entered:");
tempcopy = tempcopy.Replace("\n Entered:", "Entered:");
文本提取工具可以在用户创建以下规则时自动执行此操作:
Find:"\n Entered:" Replace With:"Entered:"
Find:"\n Entered:" Replace With:"Entered:"
Find:"\n Entered:" Replace With:"Entered:"
Find:"\n Entered:" Replace With:"Entered:"
1. 点击“浏览原始数据文件...”按钮,选择希望从中提取数据的文件。 2. 创建查找替换规则以准备主字符串。 3. 创建主要提取规则以从主文档中提取和定义需要的数据。 4. 点击“提取!”按钮。 5. 点击“创建CSV文件”按钮以在同一位置创建.csv文件。