Hi,
We're kind in a bind. We had a guy write some Python and then leave. Of course no documentation, no comments.
Not knowing Python we need translate this into Shell script because we're on a dead line to run it.
We are translating a Python 'replace' command in a file_write method.
I am trying to see what '(\"|\\\|'')') would translate to in Linux using the sed command.
Are they looking for " then replacing all "\" with just ')'?
The replace command is at the end of the line below.
Specifically replace = '(\"|\\\|'')' output = dnb.file_write(input_file = gunzip_dnb['file_output'], output_file = 'dnb_{0}{1}'.format(yyyy,mm), folder = gunzip_dnb['folder'], delimiter = '|', header = header_dnb, replace = '(\"|\\\|'')')
Would the Sed statement be something like: sed /'(\"/\\\/'')'/g or in shell script: s/'(\"/\\\/'')'/g?
Is it saying start when you find the first " in a record then replace all '\' with ')"?
In addition here's the code for the file_write method.
def file_write(self, input_file, output_file, delimiter, folder = None, header = None, replace = None):
"""
Creates a file from an input of lines.
"""
if folder == None:
folder = self._folder
with open('{0}/{1}'.format(folder, input_file), encoding = 'utf-8', errors = 'ignore') as file:
lines = file.readlines()
file_header = self.file_header(lines)
file_trailer = self.file_trailer(lines)
file_date = self.file_date(file_header, file_trailer)
file_output = lines[file_header['line']:file_trailer['line']]
with open('{0}/{1}'.format(folder, output_file), 'w') as output_file:
if not header == None:
output_file.write(header)
output_file.write('\n')
for line in file_output:
if not replace == None:
line = self.line_replace(line, find = replace, replace = '')
line = self.line_split(line, delimiter)
line.insert(0, file_date)
line = ('{0}'.format(delimiter)).join(line)
output_file.write(line)
output_file.write('\n')
file_write = dict()
file_write['file'] = file
file_write['folder'] = folder
return file_write
And for Line_replace:
def line_replace(self, line, find, replace):
"""
Replaces a value in a line.
Parameters
----------
Returns
-------
result :
"""
line = re.sub(r'{0}'.format(find), replace, line)
return line
Please let us know if you can help.
Thanks!