Попробуйте это:
import os
from xml.etree import ElementTree
from xml.sax.saxutils import escape
fileNum = 0;
saveFile = open('NewYork_1.txt','w')
saveFile.close()
for path, dirs, files in os.walk("NewYork_1"):
for f in files:
fileName = os.path.join(path, f)
with open(fileName,'a', encoding='utf-8') as myFile:
myFile=myFile.read()
if "&" in myFile:
myFile = myFile.replace("&", "&")
Лично я бы сгенерировал список файлов для чтения и перебора этого списка, а не использовал бы os.walk (если вы получаете список из предыдущей функции или отдельным сценарием, вы всегда можете создать текстовый файл с каждым txt-файлом на отдельной строке и выполнять итерацию по строкам, вместо того, чтобы получать переменную для сохранения оперативной памяти), но для каждого свой.
Как я уже сказал, хотя Я бы отказался от всей идеи замены специальных символов и использовал бы bs4 для открытия файлов, поиска элементов, которые вы ищете, и извлечения их оттуда.
import bs4
list_of_USER_IDs=[]
with open(fileName,'r', encoding='utf-8') as myFile:
a=myFile.read()
b=bs4.beautifulSoup(a)
for elem in b.findAll('USERID'):
list_of_USER_IDs.append(elem)
Это возвращает данные между Теги USERID, но они будут работать для любого тега, с которого вы хотите получить данные. Нет необходимости напрямую разбирать xml. Это действительно не сильно отличается от HTML, и BeautifulSoup создан для этого, так зачем изобретать велосипед?