I need to get this result:
Example input: (two files)
Adam 1234
John 4321
Anderson 4321
Smith 1234
Expected output:
Adam Smith 1234
John Anderson 4321
My code for now works like this, it combines two .txt files... but I can't figure out how to combine them on the same ID?
new = []
with open('full.txt', 'w') as new_file:
with open('1.txt') as fp_first_name:
with open('2.txt') as fp_last_name:
for line1 in fp_first_name:
for line2 in fp_last_name:
new_file.write(line1[:len(line1[-5:])] line2)
I've tried like
if line2[-5:] == line1[-5:]:
new_file.write(line1[:len(line1[-5:])] line2)
but this of course only takes first line of each "line2" and "line1", it doesn't go through a whole .txt file which it needs to do.
CodePudding user response:
you can split the line and have the name and number for each line then compare and combine in case it is a match:
name1, number1 = line1.split(" ")
name2, number2 = line2.split(" ")
if number2 == number1:
new_file.write(f"{name1} {name2} {number2}")
new code:
new = []
with open('full.txt', 'w') as new_file:
with open('file1.txt') as fp_first_name:
for line1 in fp_first_name:
with open('file2.txt') as fp_last_name:
for line2 in fp_last_name:
# print(f"L1: {line1}L2: {line2}")
name1, number1 = line1.split(" ")
name2, number2 = line2.split(" ")
# print(f"what {name1} {number1} {name2} {number2}")
if number2.strip() == number1.strip():
new_file.write(f"{name1} {name2} {number2}")