Reading and storing a line of output from pexpect child - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Reading and storing a line of output from pexpect child (/thread-34001.html) |
Reading and storing a line of output from pexpect child - eagerissac - Jun-17-2021 I'm new to learning pexpect and regex and I'm having some trouble figuring out how to get the output of a command I send and store it in a variable, but for the entire output of that command - I only want to store the rest of 1 specific line after a certain word. To illustrate - say I have a command that outputs hundreds of lines that all represent certain details of a specific product. Color: Maroon Red Height: 187cm Number Of Seats: 6 Number Of Wheels: 4 Material: Aluminum Brand: Toyota #and hundreds of more lines...I want to parse the entire output of the command that I sent which print the details above and only store the material of the product in a variable. Right now I have something like: child.sendline('some command that lists details') variable = child.expect(["Material: .*"]) print(variable) child.expect(prompt)The sendline and expect prompt parts list the details correctly and all, but I'm having trouble figuring out how to parse the output of that command, look for a part that says "Material: " and only store the Aluminum string in a variable. Right now from playing around I have the variable equal to the value 0 which I guess would be used to verify if a string exists in the output, but I want to access the actual output as a variable and ignore everything after finding a certain string and only include what's after that string on the line for which the the string is located on. So instead of having variable equal to and print a value of 0, it should instead print the word "Aluminum". Is there a way to do this using regex? I'm trying to get used to using regex expressions so I would prefer a solution using that but if not, I'd still appreciate any help! I'm also editing my code in vim and using linux if that helps. Update: I found something online like: [\n\r].*Object Name:\s*([^\n\r]*)which would get the stuff after Object Name: but I wasn't sure how I would store this in my code. Would I do something like: variable = exp.expect([\n\r].*Object Name:\s*([^\n\r]*)) RE: Reading and storing a line of output from pexpect child - ayoshittu - Feb-20-2024 child.sendline('some command that lists details') child.expect(prompt) output = child.before.decode() what_you_want = [i.split(':')[1].strip() for i in output.split('\n') if 'Material' in i][0] #above code should suffice. I know it is too late, but hope it can still be useful for you elsewhere. |