当前正在清除csv文件中的数据。成功地将所有内容转换为小写,删除了停用词和标点符号等。但是需要删除特殊字符。例如,csv文件包含诸如“César”,“ disgrace”之类的内容。如果有办法替换这些字符,那就更好了,但是我可以删除它们。下面是我到目前为止的代码。
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')
答案 0 :(得分:1)
保存文件时尝试:
Function
或者简单地
df.to_csv('clean_soccer.csv', encoding='utf-8-sig')
答案 1 :(得分:0)
我不确定是否有简单的方法可以替换特殊字符,但是我知道如何删除它们。尝试使用:
df['post_title']= df['post_title'].str.replace(r'[^A-Za-z0-9]+', '')
那应该用“ Csardisgrace”代替“César”,“ disgrace”。希望这会有所帮助。
答案 2 :(得分:0)
作为其他答案的替代方法,您可以使用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
How can I remove non-ASCII characters but leave periods and spaces using Python?