【问题标题】:Python string not recognize special charactersPython字符串无法识别特殊字符
【发布时间】: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


【解决方案1】:

df.read_csv(filename,encoding='utf-8')的组合修复

并在 wordcloud 实例中添加 arial 的路径。 (你应该下载并放置正确的路径)

                background_color ='white', 
                stopwords = stopwords,
                font_path='../data/arial.ttf',
                min_font_size = 10).generate(comment_words) ```

【讨论】:

    猜你喜欢
    • 2018-02-10
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    相关资源
    最近更新 更多