gpt4 book ai didi

python - 将文件的部分从匹配行打印到空行

转载 作者:太空宇宙 更新时间:2023-11-03 14:49:24 24 4
gpt4 key购买 nike

我想打印文件中从匹配行到空行的部分,所以我正在寻找一种表达方式

sed '/^Word .*/,/^$/'

在 Python 中。

例如,如果 |我有一个包含这些部分的文件:

Fruits
Apples: 10
Oranges: 20
Bananas: 5

Pastry
Cupcakes: 5
Buns: 10
Waffles: 20

如何获取 Fruits 部分?

在 Perl 中我可以做:

if ( /^Fruits/ .. /^$/ ) {
print;
}

但我不知道如何在 Python 中执行此操作。

最佳答案

您可以将字符串按“\n\n”拆分并查找以 Fruits 开头的字符串

print(*(i for i in s.split("\n\n") if i.startswith("Fruits")))

或者如果您有多个组:

print('\n\n'.join((i for i in s.split("\n\n") if i.startswith("Fruits"))))

返回:

Fruits
Apples: 10
Oranges: 20
Bananas: 5

如果:

s = """Fruits
Apples: 10
Oranges: 20
Bananas: 5

Pastry
Cupcakes: 5
Buns: 10
Waffles: 20"""

进一步您还可以通过一行提取项目:

fruits = [i for i in s.split("\n\n") if i.startswith("Fruits")][0]
fruitdict = dict((i.strip() for i in i.split(":")) for i in fruits.split('\n')[1:])
fruitdict

返回:

{'Apples': '10', 'Bananas': '5', 'Oranges': '20'}

提取所有类别:

categories = [i for i in s.split("\n\n")]

d = {}
for item in categories:
rows = item.split('\n')
d[rows[0]] = dict((i.strip() for i in i.split(":")) for i in rows[1:])
# d[rows[0]] = dict((i.split(":")[0],int(i.split(":")[1])) for i in rows[1:])

d

返回:

{'Fruits': {'Apples': '10', 'Bananas': '5', 'Oranges': '20'},
'Pastry': {'Buns': '10', 'Cupcakes': '5', 'Waffles': '20'}}

关于python - 将文件的部分从匹配行打印到空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47019523/

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