好的,所以我找不到合适的标题,所以我会尽力解释。
我有一个由名称构成的另一个文件的数据制作的列表,例如,我们可以使用list = ['AAA','BBBB','CCCC','DDDD']
之类的内容。我想在另一个文件中搜索该列表的所有元素,以及包含它们的所有行。让我们说我的txt文件看起来像这样。
PIN |Direction |MaxUp |MaxDn |MinUp |MinDn |Net
AAA | IN |0.46 |0.039 | -0.006 |0.009 | Top/AAA
AAA | IN |-0.015 |-0.020 | 0.016 |0.030 | Top1/AAA
AAA | IN |0.029 |0.019 | -0.006 |0.009 | Top2/AAA
AAA | IN |0.036 |0.029 | -0.006 |0.009 | Top3/AAA
所以我的代码如下:
for string in list:
with open('Text.txt') as file:
for lines in file:
if string in lines:
#Get all lines
#Get the line with the highest maxup and Maxdn
进程的输出应该显示我们当前正在查看的字符串的所有行:
它应该显示在这种情况下持有AAA的所有4行,然后它将只获得具有最高MaxUp和MaxDn的输出,因此输出应为:
PIN |Direction |MaxUp |MaxDn
AAA | IN |0.46 |0.039
我对我应该做的事情有一个大概的想法,但这个过程需要很长时间,因为我在for循环中打开一个文件似乎对我来说有点不对。
答案 0 :(得分:0)
首先我们应该清理数据,这意味着删除所有"https://graph.windows.net/$mytenantname/users?`$top=999?api-verion=1.6"
个字符以及空格。现在我们将以可用的格式(python列表)提供数据。这意味着我们可以非常容易地比较每列的值。
所以我们通过遍历搜索项列表中的每个字符串开始搜索行,然后对于我们拥有的每一行数据,我们检查字符串是否在行中,如果是,我们检查看看如果它打破了任何记录,然后我们记录它。 注意:我已将list的名称更改为li,因为list是python内置的
|
根据您的数据,我得到以下结果:
li = ['AAA', 'BBBB', 'CCCC', 'DDDD']
lines = []
first = True
with open('Text.txt') as file:
for line in file:
if first:
first = False
continue
lines.append([x.strip() for x in line.split('|')])
for string in li:
print('Lines containing', string, ':')
maxUp = None
maxDn = None
for line in lines:
if string in line:
if maxUp is None and maxDn is None:
maxUp = line
maxDn = line
print(line)
if line[2] >= maxUp[2]:
maxUp = line
if line[3] >= maxDn[2]:
maxDn = line
print()
print('maxUp:', maxUp)
print('maxDn:', maxDn)
print()