Как убрать ненужные слова и оставить только цифры

Я новичок в программировании. Имеется csv файл, в нем 377185 строк. Все значения в столбце baths - str, подскажите как убрать из почти каждой строки данного столбца слово baths? В ручную 377тыс. обрабатывать нереально. Сначала хотел попробовать регулярные выражения, но для их использования нужно, чтобы цифры были в формате int либо float, для применения поиска, я правильно понимаю?

id baths
0   3.5 
1   3 Baths
2   2 Baths
5   8 
200 2

Ответы (2 шт):

Автор решения: Zhihar

можно так:

with open("d:\\data.csv") as file:
    lines = file.readlines()
    lines = [line.lower().replace("baths", "") for line in lines]

with open("d:\\data.csv", 'w') as file:
    file.write(''.join(lines))

тут сначала перевожу строку в нижний регистр, чтобы удалить все baths в независимости от регистра

недостаток - всё будет переведено в нижний регистр, если этого не надо, то алгоритм можно усложнить:

with open("d:\\data.csv") as file:
    lines = file.readlines()
    lines = [(' '.join(word for word in line[:-1].split() + '\n') if word.lower() != 'baths') for line in lines]

with open("d:\\data.csv", 'w') as file:
    file.write(''.join(lines))

тут что бы все работало корректно приходится отрезать у строки последний символ (который является переводом на новую строку), а затем добавлять его заново при сборке строки из слов с исключенным baths

→ Ссылка
Автор решения: MaxU

Воспользуйтесь модулем Pandas - он идеально подходит для обработки, анализа и визуализации табличных данных:

import pandas as pd  # https://pandas.pydata.org/docs/getting_started/install.html

# парсим CSV файл в Pandas DataFrame
df = pd.read_csv("file.csv", sep=",")

#  в столбце `baths` удаляем все символы, кроме цифр и точки
df["baths"] = df["baths"].str.replace(r"[^\d\.]", "", regex=True)

# записываем DataFrame обратно в CSV файл
df.to_csv("result.csv", index=False)


Регулярное выражение r"[^\d\.]" - обозначает:

  1. все что в в квадратных скобках - любой символ из набора
  2. если первым символом внутри квадратных скобок является ^ - значит применить отрицание к набору символов. Т.е. по смыслу - любые символы, кроме указанных в квадратных скобках, после ^.
  3. \d - обозначает любую цифру от 0 до 9.
  4. \. - обозначает символ точки, т.к. . без экранирования обозначает на языке RegEx - любой одиночный символ.

Все вместе это обозначает - найти все символы кроме цифр и символа точки и заменить их на пустую строку, т.е. удалить.

PS существуют сервисы, которые позволяют протестировать RegEx и объяснить (на английском) как он работает. Например - regex101.com

Документация по встроенному модулю re

→ Ссылка