我需要解析一个文本文件并获取输出并将它们添加到列表中。
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 ="在同一条线上,我需要输出来获得两种颜色:
我的颜色=红色,我的颜色=绿色
我想要的输出是:
red
green
我需要将它们分别添加到列表中[' red',' green']。请帮忙!答案将不胜感激。
答案 0 :(得分:5)
您当然可以使用正则表达式:
import re
str = "my color=red and my color=green"
p = r'color=([a-z]+)'
x = re.findall(p, str)
答案 1 :(得分:3)
您的解决方案几乎正确,您打印正确的线条。以下是将它们保存到列表的方法:
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)
答案 2 :(得分:2)
也许你可以在没有正则表达式的情况下做到这一点:
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=')]
虽然正则表达式似乎最适合这里。
答案 3 :(得分:1)
我们最有可能避免使用群组。你可以通过lookbehind获得颜色的值,
>>> import re
>>> str = 'my color=red and my color=green'
>>> m = re.findall('(?<=color=)\S+', str)
>>> m
['red', 'green']