Как удалить специальные символы из CSV с помощью панд - PullRequest
2 голосов
/ 14 мая 2019

В настоящее время чистка данных из файла CSV.Успешно сумасшедшие все строчные, удалены пробелы и знаки препинания и т. Д. Но нужно удалить специальные символы.Например, файл csv содержит такие вещи, как «César», «disgra».Если есть способ заменить эти символы, то даже лучше, но я могу удалить их.Ниже приведен код, который у меня есть.

import pandas as pd
from nltk.corpus import stopwords
import string
from nltk.stem import WordNetLemmatizer

lemma = WordNetLemmatizer()

pd.read_csv('soccer.csv', encoding='utf-8')
df = pd.read_csv('soccer.csv')

df.columns = ['post_id', 'post_title', 'subreddit']
df['post_title'] = df['post_title'].str.lower().str.replace(r'[^\w\s]+', '').str.split()


stop = stopwords.words('english')

df['post_title'] = df['post_title'].apply(lambda x: [item for item in x if item not in stop])

df['post_title']= df['post_title'].apply(lambda x : [lemma.lemmatize(y) for y in x])


df.to_csv('clean_soccer.csv')

Ответы [ 3 ]

1 голос
/ 14 мая 2019

При сохранении файла попробуйте:

df.to_csv('clean_soccer.csv', encoding='utf-8-sig')

или просто

df.to_csv('clean_soccer.csv', encoding='utf-8')
0 голосов
/ 14 мая 2019

В качестве альтернативы другим ответам вы можете использовать string.printable:

import string

printable = set(string.printable)

def remove_spec_chars(in_str):
    return ''.join([c for c in in_str if c in printable])

df['post_title'].apply(remove_spec_chars)

Для справки string.printable зависит от машины, которая представляет собой комбинацию цифр, символов ascii_letters, знаков препинания и пробелов.

Для вашего примера строки César' '‘disgrace’' эта функция возвращает 'Csardisgrace'.

https://docs.python.org/3/library/string.html
Как я могу удалить не-ASCII символы, но оставить точки и пробелы, используя Python

0 голосов
/ 14 мая 2019

Я не уверен, есть ли простой способ заменить специальные символы, но я знаю, как их можно удалить.Попробуйте использовать:

df['post_title']= df['post_title'].str.replace(r'[^A-Za-z0-9]+', '')

Это должно заменить 'CÃ sar' '' disggrace '' на 'Csardisgrace'.Надеюсь, это поможет.

...