用Python处理文本文件

2024-09-27 07:29:12 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我对Python很陌生。当我开始这样做的时候,它看起来很简单。但是我完全不知所措。

我想要一个包含多达90k个条目的文本文件,并将数据组放在一行上,用“;”分隔,下面是我的示例。请记住,数据组的大小各不相同。它们可以是两个条目,也可以是100个条目。

Raw Data

group1
data

group2
data
data
data

group3
data
data
data
data
data
data
data
data
data
data
data
data

group4
data
data

Formatted Data

group1;data;

group2;data;data;data;

group3;data;data;data;data;data;data;data;data;data;data;data;data;

group4;data;data;

Tags: 数据目的示例dataraw条目文本文件formatted
3条回答

你试过什么?文本文件用于/来自什么?文件操作是我计划学习的最后“基本”事情之一。当我理解for循环的细微差别时,我会把它保存起来,而循环、字典、列表、附录和其他一百万个方便的函数就在那里。这是经过2-3个月的研究,编码和创建图形用户界面的方式。

总之,这里有一些基本建议。
';'.join(group)将在每个组之间放置“;”,有效地创建一个长(分号分隔)字符串

group.replace("SPACE CHARACTER", ";"):这将用分号替换组中的任何空格或指定字符(如换行符)。

还有很多其他方法,包括将txt文件加载到python脚本中,^{}函数中,将组放入listsdictionaries或matrix中,等等。。

试试下面的方法。(未经测试…您可以通过调试学习一些python!)

创建python文件“parser.py”

import sys

f = open('filename.txt', 'r')

for line in f:
    txt = line.strip()
    if txt == '':
        sys.stdout.write('\n\n')
        sys.stdout.flush()
    sys.stdout.write( txt + ';')
    sys.stdout.flush()

f.close()

在shell中,键入:

python parser.py > output.txt

看看output.txt是不是你想要的。

假设组用空行分隔,则可以使用以下一行:

>>> print "\n".join([item.replace('\n', ';') for item in open('file.txt').read().split('\n\n')])
group1;data
group2;data;data;data
group3;data;data;data;data;data;data;data;data;data;data;data;data
group4;data;data;

其中file.txt包含

group1
data

group2
data
data
data

group3
data
data
data
data
data
data
data
data
data
data
data
data

group4
data
data

首先将文件内容(open().read())拆分为空行split('\n\n')以生成块列表,然后在每个块[item ... for item in list]中,用分号替换新行,最后用新行"\n".join(list)分隔打印所有块

注意,上面的代码对于生产是不安全的,这是您为交互式数据转换而编写的代码,而不是在生产级脚本中。

相关问题 更多 >

    热门问题