Python Forum
modify line in file if pattern found in list. - 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: modify line in file if pattern found in list. (/thread-14634.html)



modify line in file if pattern found in list. - kttan - Dec-10-2018

OS : window xp/7 | python 3
I'm new in python.

looking for help to modify file from a list from file.

master_f file:
!!!! 16 0 1 1526635345 0000
!IPG: rev 09.00p Fri May 18 17:22:26 2018
nodes "+1_5V"
nodes "+1_5V1"
nodes "GND"
nodes "+48V"
nodes "XSIG011083_12"
nodes "XSIG011083_121"
nodes "XSIG013829"

list_f file:
+1_5V
XSIG011083_12
XSIG013829

expected master file after modify:
!!!! 16 0 1 1526635345 0000
!IPG: rev 09.00p Fri May 18 17:22:26 2018
!p_rmv! nodes "+1_5V"
nodes "+1_5V1"
nodes "GND"
nodes "+48V"
!p_rmv! nodes "XSIG011083_12"
nodes "XSIG011083_121"
!p_rmv! nodes "XSIG013829"


Code i'm get from web , and modify some, but it it duplicate my line base on how many list im have, and it output to another file, and im need add "" at my list_f file.

# open the list of words to search for
list_file = open('master_f')

search_words = []

# loop through the words in the search list
for word in list_file:

    # save each word in an array and strip whitespace
    search_words.append(word.strip())

list_file.close()

# this is where the matching lines will be stored
matches = []
notmatchs = []

# open the master file
master_file = open('list_f')
# create the new file
new_file = open('output', 'w+')


# loop through each line in the master file
for line in master_file:

    # split the current line into array, this allows for us to use the "in" operator to search for exact strings
    current_line = line.split()

    # loop through each search word
    for search_word in search_words:

        # check if the search word is in the current line
        if search_word in current_line:

            # if found then save the line as we found it in the file
            matches.append(line)
            new_file.write('!!p_rmv!  ' + line)
            # once found then stop searching the current line
            break
        else:
            new_file.write(line)
            
			                     

master_file.close()
new_file.close()



RE: modify line in file if pattern found in list. - Gribouillis - Dec-10-2018

Dedent line 41-42 to align the 'else' with the 'for'.