按空格拆分unicode字符串(希伯来语)并查找字数

时间:2017-09-22 11:22:41

标签: python string pandas unicode

我有一个包含列“消息”的数据框。我想要一个新列“word_count”,它将计算消息中的所有单词。例如:

message: "Hello my name Hello"
word_count = {'Hello':2, 'my':1, 'name':1}

我的实际数据框是希伯来语,如Unicode。

我之前用字符串做过这个,但现在我遇到了unicode字符串的问题。我知道我不能使用split()方法,所以我正在寻找另一种方法来通过空格分割unicode字符串,并计算每个单词。

我的整个数据框已经单独编码了。这就是我的尝试:

def word_count(text):
    word_count = {}
    for word in text.encode('utf-8'):
        if word not in word_count:
            word_count[word] = 1
        else:
            word_count[word] += 1
    return word_count

..
history['word_count'] = history['clear_message'].apply(word_count)

我尝试了更多功能,但所有功能都返回了计数:

{u'': 1, u'\u05d0\u05e0\u05d0': 1, u'\u05e9\u05de\u05e2': 1}

会喜欢一些指导。

例如,输入:

שמע אתה אחד הלא מובנים

字数统计输出:

{' ': 4, '\xa2': 1, '\xd7': 18, '\xa0': 1, '\xa9': 1, '\x9d': 1, '\xaa': 1, '\x91': 1, '\x90': 3, '\x93': 1, '\x95': 1, '\x94': 2, '\x97': 1, '\x99': 1, '\n': 1, '\x9c': 1, '\x9e': 2}

预期的输出就像我在顶部写的那样(但是用希伯来文写的)。 我的python版本目前是2.7.13,可能应该更新。

2 个答案:

答案 0 :(得分:1)

您应该可以使用str.splitapplyCounter对象轻松完成此操作。

from collections import Counter

df
            clear_message
0  שמע אתה אחד הלא מובנים

df.clear_message.str.split().apply(Counter) 

0    {'אחד': 1, 'מובנים': 1, 'שמע': 1, 'אתה': 1, 'ה...
Name: clear_message, dtype: object

答案 1 :(得分:1)

这适用于Python 2和3。

# -*- coding: utf-8 -*-

input_val = " שמע שמע אתה אחד הלא מובנים"

def word_count(text):
    word_count = {}
    for word in text.split():
        if word not in word_count:
            word_count[word] = 1
        else:
            word_count[word] += 1
    return word_count

print(word_count(input_val))