On 29/12/19 5:14 AM, Dan Sommers wrote:
On 12/28/19 12:29 AM, Mahmood Naderan via Python-list wrote:
Hi
I have some lines in a text file like
ADD R1, R2
ADD3 R4, R5, R6
ADD.MOV R1, R2, [0x10]
If I grep words with this code
for line in fp:
     if my_word in line:
Then if my_word is "ADD", I get 3 matches. However, if I grep word with this code
for line in fp:
     for word in line.split():
         if my_word == word:
Then I get only one match which is ADD R1. R2.
Actually I want to get 2 matches. ADD R1, R2 and ADD.MOV R1, R2, [0x10] because these two lines are actually "ADD" instructions. However, "ADD3" is something else.
How can I fix the code for that purpose?
(1) word.startswith() won't solve your problem.  Expliticly
checking the character after the second "D" would.  You'll
have to determine which characters are or aren't part of
the instruction.  A complete solution probably depends on
what else you are or will look for in the future.

(2) That looks like a programming language (88000? POWER?).
Watch out for comments containing the word ADD, too.


For which reason, and given its finite and limited nature, I'd prefer to be explicit:-

Assuming "ADD" is only a sample of the total task, perhaps it will not be too impractical to create categories of instruction:

        ADD_CATEGORY = [ "ADD", "ADD.MOV" ]
        etc

Now, you can perform an "in" on the first token:

        if line.split()[ 0 ] in ADD_CATEGORY:
                # this command one of those in the ADD category...

In this way, rather than relying upon (actually *not* being able to rely upon) similarities of appearance, you have complete control to limit which commands fit into which category/ies...
--
Regards =dn
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to