【发布时间】:2020-12-18 10:51:50
【问题描述】:
我有一个带有一系列特殊字符的字符串的 csv,当它加载时看起来很好(使用 df.head(10) 但是当我使用 df.iloc[0].descripcion 获取单元格时会出现一些编码。
我看到了这个:
depto. interior de 80.15m2, consta de sala comedor cocina equipada, \xc3\xa1rea de lavado, ba\xc3\xb1o completo, recamara principal con closet y ba\xc3\xb1o completo. 2da. recamara con closet.'
我需要把它改成这样:
depto. interior de 80.15m2, consta de sala comedor cocina equipada, área de lavado, baño completo, recamara principal con closet y baño completo. 2da. recamara con closet.
要加载 csv,我正在使用带有 pd.read_csv('../data.csv') 的 pandas
如果我使用 excel 或 libre office 打开文件看起来很好,所以我认为这是编码。
这是我最后运行的代码
stopwords = set(STOPWORDS)
# split the value
tokens = df2.iloc[0].descripcion.split(' ')
# Converts each token into lowercase
for i in range(len(tokens)):
tokens[i] = tokens[i].lower()
comment_words += " ".join(tokens)+" "
wordcloud = WordCloud(width = 1600, height = 1600,
background_color ='white',
stopwords = stopwords,
min_font_size = 10).generate(comment_words)
# plot the WordCloud image
plt.figure(figsize = (8, 8), facecolor = None)
plt.imshow(wordcloud)
plt.axis("off")
plt.tight_layout(pad = 0)
# plt.savefig('words.png',dpi=)
plt.show() ```
【问题讨论】:
-
如果您使用
print(df.iloc[0].descripcion),它应该使用正确的字符呈现。这就是python在内存中表示Unicode字符串的方式——字符á和ñ在ASCII字符集之外,因此需要分别在字符串中表示特殊的Unicode代码\xc3\xa1和\xc3\xb1。从技术上讲,在 Unicode 中,á 和 ñ 是两个“代码点”——它们只是在呈现文本时混合在一起。 -
好的,但我需要拆分并检查每个单词。这会影响我对此进行的任何分析吗?
-
不应该。你试过了吗?
-
是的,它返回一个具有相同值的列表,例如
['depto.', 'interior', 'de', '80.15m2,', 'consta', 'de', 'sala', 'comedor', 'cocina', 'equipada,', '\xc3\xa1rea', 'de', 'lavado,', 'ba\xc3\xb1o', 'completo,', 'recamara', 'principal', 'con', 'closet', 'y', 'ba\xc3\xb1o', 'completo.', '2da.', 'recamara', 'con', 'closet.']即使我尝试使用 wordcloud 模块生成词云时,我会得到像“BA”这样的词,而不是“BAÑO” -
添加 font_path = 'arial.ttf'
标签: python pandas string dataframe