Предварительная обработка текста + Python + CSV: удаление специальных символов из столбца CSV - PullRequest
0 голосов
/ 24 сентября 2018

Я работаю над проблемой классификации текста.Мой CSV-файл содержит столбец с описанием «description», который описывает события.К сожалению, этот столбец полон специальных символов, кроме английских слов.Иногда все поле подряд заполнено такими символами, или, иногда, несколько слов имеют такие специальные символы, а остальные - английские слова.Я показываю вам два поля образца из двух разных строк:

हर वर्ष की तरह इस वर्ष भी सिंधु सेना द्वारा आयोजित सिंधी प्रीमियर लीग फुटबॉल टूर्नामेंट का आयोजन एमबीएम ग्राउंड में करने जा रही है जिसमें अंडर-19 टीमें भाग लेती है आप सभी से निवेदन है समाज के युवाओं को प्रोत्साहन करने अवश्य पधारें

Unwind on the strums of Guitar &  immerse your soul into the magical vibes of music! ️? ️?..Guitar Night By Ashmik Patil.July 19, 2018.Thursday.9 PM Onwards.*Cover charges applicable...#GuitarNight #MusicalNight #MagicalMusic #MusicLove #Party #Enjoy #TheBarTerminal #Mumbaikars #Mumbai

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

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

Как реализовать это с помощью Python (я использую ноутбук Jupyter)?

Ответы [ 3 ]

0 голосов
/ 24 сентября 2018

Вы можете сделать это, используя regex .Предполагая, что вы смогли извлечь текст из файла CSV -

#python 2.7
import re
text = "Something with special characters á┬ñ┬╡├á┬ñ┬░├á┬Ñ┬ì├á┬ñ┬╖"
cleaned_text = re.sub(r'[^\x00-\x7f]+','', text)
print cleaned_text

Output - Something with special characters 

Чтобы понять используемое выражение регулярного выражения, см. Здесь .

0 голосов
/ 24 сентября 2018

Вы можете закодировать вашу строку в ascii и ignore ошибок.

>>> text = 'Something with special characters á┬ñ┬╡├á┬ñ┬░├á┬Ñ┬ì├á┬ñ┬╖'
>>> text = text.encode('ascii', 'ignore')

, что даст вам двоичный объект, который вы можете в дальнейшем декодировать снова до utf

>>> text
b'Something with special characters '

>>> text = text.decode('utf')
>>> text
'Something with special characters '
0 голосов
/ 24 сентября 2018

Вы можете использовать панды для чтения файла CSV в кадре данных.используя:

import pandas as pd 
df = pd.read_csv(fileName,convertor={COLUMN_NUMBER:func})

где func, это функция, которая принимает одну строку и удаляет специальные символы.это можно сделать по-разному, используя регулярные выражения, но вот простой

import string
def func(strg):
    return ''.join(c for c in strg if c in string.printable[:-5])

в качестве альтернативы, вы можете сначала прочитать кадр данных, а затем применить, чтобы изменить столбец описания.т../:;<=>?@[\]^_`‹| rout~ '

...