是否有任何python包来处理任何.txt文件?

时间:2013-01-06 20:12:35

标签: python

我使用openpyxl来处理许多Excel操作,但同样寻找任何处理.txt文件的包。

我有一个.txt文件,如下所示,其中包含类似表格的数据。我必须从中删除特殊字符,并将原始数据放入Excel工作表中。

=============|=============|=============|=============|
    Name     |   Address   |PhoneNumber  |     Age     |
=============|=============|=============|=============|
   Matt      |   B3/24     |  8475968    |    25       |
   John      |   A1-A2 Wing|  3335968    |    44       |

有没有?

3 个答案:

答案 0 :(得分:5)

为什么你需要“处理”.txt文件?大多数情况下,您只需使用open()命令打开它们,然后使用read()write()方法对它们进行读/写。

请查看Python文档中的Reading and Writing Files部分。从open()命令here开始。


如果您有以特殊格式(例如CSV)编写的txt文件,则可以尝试在PyPi上搜索正确的模块。请注意,在这种情况下,Python具有很棒的内置CSV模块,可以很好地处理CSV文件。阅读更多here


在您修改帖子后,我可以告诉您,您可以访问asciitable,该PyPi也位于great documentation并且{{3}}。 然而 - 如果没有这个库,这样做看起来并不难(嗨 - 只是说。你应该使用这个模块,它看起来很棒)。只需按行读取文件,然后按管道拆分每一行。如果拆分后单元格的唯一内容是=符号,请留空行。否则 - 只需在拆分后感受细胞的含量。

答案 1 :(得分:3)

我建议你试试asciitable

答案 2 :(得分:2)

我总是使用pandas来解决这类问题,这就是你在一行中阅读文件的方法:

from pandas import read_table
data = read_table('table.txt', sep='|', skiprows=[0,2]).dropna(axis=1)

输出:

     Name    Address    PhoneNumber  Age
0    Matt    B3/24       8475968     25
1    John    A1-A2 Wing  3335968     44

之后,您可以使用数据['名称'],操作,过滤等访问您的列。最后,您使用data.csv()data.to_excel()写入文件。请参阅文档here(特别是groupby部分):

编辑:因为列名称是用空格导入的('名称'而不是'名称'),你还需要这样做:

data.columns = data.columns.map(str.strip)

之后data['Name']data['Address']等将正常运行。删除导入错误的最后一个空列需要.dropna(),因为在您的文件中有一个分隔符'|'在每一行的末尾。你可以在没有.dropna()的情况下试一试,看看会发生什么。