将字符串分成多个块,然后将这些块传递给新对象。 Python 3

问题描述 投票:1回答:3

我正在尝试操作strings的列表,以便将每个字符串分解成块,然后将这些块存储在新列表中。

示例:

原始的字符串列表看起来像这样

l_1 = ['09:13:34\t135\t94\t77\t2.97\t2.247\\\n', '09:14:34\t135\t94\t77\t3.03\t2.207\\\n', '09:15:34\t130\t94\t79\t2.83\t2.331\\\n', '09:16:34\t132\t95\t80\t2.86\t2.331\\\n

我想要的是剥离每个字符串末尾的\\\n,然后在\t处分离每个字符串。因此,例如,“``l_1 [0]””应从此结束

'09:13:34\t135\t94\t77\t2.97\t2.247\\\n'

至此l_2 = ['09:13:34', 135, 94, 97, 2.97, 2.247]

对于上下文,l_1来自纯文本文件,其中每行新行都有时间戳记的生物识别数据,每个文本文件都是一个参与者,我需要将所有行合并到熊猫数据框中的一行中,并且可能一次需要处理100-200个文本文件。显然,我希望能够实现自动化。

到目前为止,我尝试过的是:

import re

with open("data_1.txt") as f:
    contents = f.readlines()


i = contents[0]
re.split(r'\t+', i.rstrip('\\\n'))

print(i)

但是,当我运行时,l_1变成了

<class 'list'>
[['', '}']]

所以我还没有开始将这些块存储在新列表中,然后将该列表在数据框中排成一行。

[如果有人可以告诉我我做错了什么(以及正确做对的事情),我将非常有义务。

python regex string pandas
3个回答
0
投票

我在下面添加了两个示例。请检查一下。我将它们设置为一次读取32个字节。但是您可以增加,减少或发疯,并乐在其中。

普通方式:

blocks = []
while True:
    block = f.read(32)
    if block == '':
        break
    blocks.append(block)

Pythonic方式(最有效的方式之一:

blocks = []
for block in iter(partial(f.read,32),''):
    blocks.append(block)

先生,祝您有个愉快的一天。>


-1
投票

[使用Python split()strip()可以完美地工作:


-1
投票

尝试:

© www.soinside.com 2019 - 2024. All rights reserved.