python解析并从lin获得更多的输入

2024-04-26 12:16:54 发布

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

我需要解析一个文本文件,得到输出并将它们添加到列表中

    with open(qwer.txt, 'r') as my_file:
        a = my_file.readlines()
        for line in a:
            for part in line.split():
                if "color=" in part:
                    p1 = part.split('=')[1] 
                    print(p1)
                    list1 = []  
                    p1.append(list1)

因此,我有一行,在同一行上有两个/更多“color=”,我需要输出以获得两种颜色:

my color=red and my color=green

我想要的输出是:

red
green

我需要将它们分别添加到一个列表中,分别为['red'、'green'],请帮忙!请回答


Tags: in列表formywithlinegreenred
3条回答

也许你可以不用regex:

parts = itertools.chain.from_iterable(line.split() for line in my_file)
colors = [part.split('color=')[1] for part in parts if part.startswith('color=')]

尽管正则表达式似乎最适合这里

你的解决方案几乎是正确的,你打印正确的行。下面是如何将它们保存到列表中:

result = []
with open('qwer.txt') as my_file:
    for line in my_file:
        for part in line.strip().split():
            if "color=" in part:
                p1 = part.split('=')[1] 
                result.append(p1)

如果需要列表列表,请按以下方式操作:

result = []
with open('qwer.txt') as my_file:
    for line in my_file:
        values = []
        for part in line.strip().split():
            if "color=" in part:
                p1 = part.split('=')[1] 
                values.append(p1)
        if values:
            result.append(values)

当然,您可以使用regex:

import re
str = "my color=red and my color=green"
p = r'color=([a-z]+)'
x = re.findall(p, str)

相关问题 更多 >