0

I want to find 2 elements in the first page of a pdf file. The elements that start with P and the elements that start with N. Even if 1 element has been found, the search for the other element still needs to be continued.

If P is found, continue searching for N If N is found, continue searching for P When P and N are found, stop searching

I am having troubles with my loops, N is only found if there is no P. I get that there is a issue with the if-statements, but I can't seem to correct it.

    if text is not None:
        p_new = "NoPFound"
        n_new = "NoNFound"
        for line in text.split('\n'):
            #get p
            if line.startswith('P '):
                pieces = line.split()
                p_old = pieces[1]
                p_new = (p_old[7:11]) + (p_old[0:6])
                break
            #get n
            if line.startswith('N '):
                pieces = line.split()
                n_old = pieces[1]                        
                n_new = (n_old[0:15]) + "/" + (n_old[18:20])
                break
    list_parsed_items.append([p_new, n_new])

1 Answer 1

2

Use flags. You have a small state machine.

    if text is not None:
        p_new = None
        n_new = None
        for line in text.splitlines():
            #get p
            if not p_new and line.startswith('P '):
                pieces = line.split()
                p_old = pieces[1]
                p_new = (p_old[7:11]) + (p_old[0:6])
            #get n
            if not n_new and line.startswith('N '):
                pieces = line.split()
                n_old = pieces[1]                        
                n_new = (n_old[0:15]) + "/" + (n_old[18:20])
            if p_new and n_new:
                break
    list_parsed_items.append([p_new, n_new])
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks Tim, worked like a charm.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.