简体   繁体   中英

Python: How to extract data in text file based on class information from another text file?

In this case there are 3 classes which is represented by the value 0, 1 and 2. I would like to extract information that are belong to class 1 from another text file called fileA.txt. I would like to know how to solve this using python.

For example:

class.txt

0
0
1
2
2
1
1

fileA.txt

a=[1,3,2,1]
b=[3,2]
c=[3,2,1]
d=[3,3]
e=[4,5,6]
f=[3,2,3]
g=[2,2]

Expected output:

c=[3,2,1]
f=[3,2,3]
g=[2,2]

Can anyone help me?

Read the "class.txt" file and create list of classes:

with open("class.txt", "rt") as f:
    classes = [int(line) for line in f.readlines()]

Read the "fileA.txt" file and create list of correct lines:

with open("fileA.txt", "rt") as f:
    lines = [line for index, line in enumerate(f.readlines()) if classes[index] == 1]

Show the result:

print "".join(lines)

Not a Python solution, but I like it :)

$ grep -n "^1$" class.txt | cut -d: -f1 | while read linenumber
do
  sed -n "${linenumber}p" < fileA.txt
done

Output:

c=[3,2,1]
f=[3,2,3]
g=[2,2]

Tools used are:

Here's intuitive way to do it

classes = [l.strip() for l in open("class.txt").readlines()]
indices = [i for i, x in enumerate(classes) if x == "1"]

with open('fileA.txt') as file:
    for index,line in enumerate(file):
        if(index in indices):
            print(line)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM