Skip to main content

Can't delete "^M\n" from a .txt file

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

Popular posts from this blog

Prop `className` did not match in next js app

I have written a sample code ( Github Link here ). this is a simple next js app, but giving me error when I refresh the page. This seems to be the common problem and I tried the fix provided in the internet but does not seem to fix my issue. The error is Warning: Prop className did not match. Server: "MuiBox-root MuiBox-root-1" Client: "MuiBox-root MuiBox-root-2". Did changes for _document.js, modified _app.js as mentioned in official website and solutions in stackoverflow. but nothing seems to work. Could someone take a look and help me whats wrong with the code? Via Active questions tagged javascript - Stack Overflow https://ift.tt/2FdjaAW

How to show number of registered users in Laravel based on usertype?

i'm trying to display data from the database in the admin dashboard i used this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count(); echo $users; ?> and i have successfully get the correct data from the database but what if i want to display a specific data for example in this user table there is "usertype" that specify if the user is normal user or admin i want to user the same code above but to display a specific usertype i tried this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count()->WHERE usertype =admin; echo $users; ?> but it didn't work, what am i doing wrong? source https://stackoverflow.com/questions/68199726/how-to-show-number-of-registered-users-in-laravel-based-on-usertype

Why is my reports service not connecting?

I am trying to pull some data from a Postgres database using Node.js and node-postures but I can't figure out why my service isn't connecting. my routes/index.js file: const express = require('express'); const router = express.Router(); const ordersCountController = require('../controllers/ordersCountController'); const ordersController = require('../controllers/ordersController'); const weeklyReportsController = require('../controllers/weeklyReportsController'); router.get('/orders_count', ordersCountController); router.get('/orders', ordersController); router.get('/weekly_reports', weeklyReportsController); module.exports = router; My controllers/weeklyReportsController.js file: const weeklyReportsService = require('../services/weeklyReportsService'); const weeklyReportsController = async (req, res) => { try { const data = await weeklyReportsService; res.json({data}) console