I'm generating a .txt from a SQL database. But for some reason, some of my data is not just plain text.
My .txt file looks like this:
PC001|1FSTFJ|BE21|Rooftop
PC002|JVQ2F9|BE22|Basement
PC003|JY1035W1|BE22|Basement^M\n
I tried some Python and Bash scripts with the help of gpt, but it doesn't work:
#!/bin/bash
file_path="file.txt"
sed -i 's/\^M\n//g' "$file_path"
This script literally does nothing, and I don't understand why.
And the Python script:
def clean_file(file_path):
try:
with open(file_path, 'r') as file:
lines = file.readlines()
cleaned_lines = []
for line in lines:
# Diviser la ligne en champs, en supposant qu'ils sont séparés par '|'
fields = line.strip().split('|')
# Nettoyer chaque champ individuellement
cleaned_fields = [field.rstrip('M').strip() for field in fields]
# Recombiner les champs nettoyés en une seule ligne
cleaned_line = '|'.join(cleaned_fields)
cleaned_lines.append(cleaned_line)
with open(file_path, 'w') as file:
# Écrit toutes les lignes nettoyées, avec un saut de ligne approprié après chaque ligne
file.write('\n'.join(cleaned_lines))
print("Le fichier a été nettoyé avec succès.")
except Exception as e:
print(f"Une erreur s'est produite : {str(e)}")
file_path = 'file.txt'
clean_file(file_path)
I also tried with .replace
, because I saw that it could work, but it didn't for me.
def clean_file(file_path):
try:
with open(file_path, 'r') as file:
lines = file.readlines()
cleaned_lines = []
for line in lines:
# Diviser la ligne en champs, en supposant qu'ils sont séparés par '|'
fields = line.split('|')
# Nettoyer chaque champ individuellement
cleaned_fields = [field.replace('M\n', '').strip() for field in fields]
# Recombiner les champs nettoyés en une seule ligne
cleaned_line = '|'.join(cleaned_fields).rstrip('\n')
cleaned_lines.append(cleaned_line)
with open(file_path, 'w') as file:
file.write('\n'.join(cleaned_lines))
print("Le fichier a été nettoyé avec succès.")
except Exception as e:
print(f"Une erreur s'est produite : {str(e)}")
file_path = 'file.txt'
clean_file(file_path)
With both Python scripts, I get this kind of result:
PC001|1FSTFJ|BE21|Rooftop
PC002|JVQ2F9|BE22|Basement
PC003|JY1035W1|BE23|Basement
\n
PC004|FFJSFH43|BE24|Rooftop
So there's not more ^M
but there's still the \n
, and it's on the next line.
source https://stackoverflow.com/questions/77805995/cant-delete-m-n-from-a-txt-file
Comments
Post a Comment