gpt4 book ai didi

python - 从每一行的第一个字符开始解析文件

转载 作者:行者123 更新时间:2023-11-28 22:25:03 24 4
gpt4 key购买 nike

我正在尝试按文件每一行中的第一个字符对文件进行分组。

例如文件:

s/1/1/2/3/4/5///6
p/22/LLL/GP/1/3//
x//-/-/-/1/5/-/-/
s/1/1/2/3/4/5///6
p/22/LLL/GP/1/3//
x//-/-/-/1/5/-/-/

我需要从第一个 s/ 开始对所有内容进行分组到下一个s/ .我不认为split()将工作,因为它会删除定界符。

期望的最终结果:

s/1/1/2/3/4/5///6
p/22/LLL/GP/1/3//
x//-/-/-/1/5/-/-/

s/1/1/2/3/4/5///6
p/22/LLL/GP/1/3//
x//-/-/-/1/5/-/-/

我更愿意在没有 re 的情况下执行此操作模块如果可能(是吗?)

编辑:尝试:

以下使用列表推导获取组中的值:

with open('/file/path', 'r') as f:
content = f.read()

groups = ['s/' + group for group in content.split('s/')[1:]]

s/是序列中的第一个字符,我使用 [1:]避免只有 s/ 的元素在 groups[0] .

有没有更好的方法?或者这是最好的?

最佳答案

假设文件的第一行以 's/' 开头,您可以尝试这样的操作:

groups = []
with open('test.txt', 'r') as f:
for line in f:
if line.startswith('s/'):
groups.append('')
groups[-1] += line

要处理不以 's/' 开头且第一个元素是所有行直到第一个 's/' 的文件,我们可以使一个小改动,在第一行添加一个空字符串:

groups = []
with open('test.txt', 'r') as f:
for line in f:
if line.startswith('s/') or not groups:
groups.append('')
groups[-1] += line

或者,如果我们想跳过第一个 's/' 行,我们可以执行以下操作:

groups = []
with open('test.txt', 'r') as f:
for line in f:
if line.startswith('s/'):
groups.append('')
if groups:
groups[-1] += line

关于python - 从每一行的第一个字符开始解析文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45841759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com