【发布时间】:2012-02-08 23:43:18
【问题描述】:
我正在为我们的数据部门编写一个转换器代码,用于将固定宽度文件转换为分隔文件。通常我们使用将文件导入 Excel,使用文本导入向导设置字段长度,然后保存为 csv。但是,我们遇到了限制,我们开始获取数百万条记录长的文件,因此无法导入 Excel。这些文件并不总是在字段之间有空格,尤其是在电话号码或邮政编码等值字段之间。标题也经常被完全填满,没有空格。
我们正在处理的典型固定宽度文件的示例:
SequenSack and PaFull Name****************************]JOB TITLE****************]HOSP NAME******************************]Delivery Address***********************]Alternate 1 Address********************]Calculated Text**********************************]POSTNET Bar
000001T1 P1 Sample A Sample 123 Any Street Anytown 12345-6789 12345678900
000002T1 P1 Sample A Sample Director of Medicine 123 Any Street Po Box 1234 Anytown 12345-6789 12345678900
程序需要将文件分成以下分隔字段:
序列
萨克和帕
全名
职位名称
医院名称
收货地址
备用地址 1
计算文本
邮政网吧
每个文件的每个字段的宽度略有不同,具体取决于作业的其余部分。我正在寻找的是一个面向 GUI 的分隔符,很像用于固定宽度文件的 Excel 导入向导。我正在用 Python 编写这个工具,作为一个更大的工具的一部分,该工具执行许多其他文件操作,例如将文件分解为多个文件、反转文件、从定界转换为固定宽度以及校验位检查。我将 Tkinter 用于其余工具,如果解决方案也使用它,那将是理想的。
任何帮助表示赞赏
【问题讨论】:
-
那么问题是如何编写GUI而不是如何拆分列?如果是这样,您可能需要考虑编辑您的标题并将 Tkinter 标签添加到您的问题中。从标题看来,您似乎在问如何为字符串编制索引,但从您的问题看来,您似乎在问如何编写 Tkinter gui 来显示示例文本并选择要拆分的列号...跨度>
-
我不相信有一种方法可以使该过程自动化,因为某些字段并不总是填充,并且某些字段中有空格,因此 split() 方法不会很有效。基于此,我假设我需要用户输入来正确界定这些字段。一旦我有了位置,我就知道如何创建一个正确分隔的文件,我只需要一种用户友好的方式来让位置分割。
-
所有文件都有这种样式的标题行吗?标题中似乎有足够的信息来消除对交互式对话的需要。 (即
"A Field**]Another FieldA Third FielA Fourth Field*****]"等)
标签: python file tkinter fixed-width delimited