在Python中,将汉字转换为数字可以通过以下几种方法实现:
1. 使用`LabelEncoder`函数(适用于分类变量,如水果种类等):
```python
from sklearn import preprocessing
创建LabelEncoder对象
label = preprocessing.LabelEncoder()
对数据进行编码
data['type'] = label.fit_transform(data['type'])
data['buy'] = label.transform(data['buy'])
2. 使用字典映射(适用于简单的字符到数字的转换):
```python
示例字典映射
chinese_to_number_dict = {
'一': 1, '二': 2, '三': 3, '四': 4, '五': 5, '六': 6, '七': 7, '八': 8, '九': 9,
'十': 10, '百': 100, '千': 1000,
'万': 10000, '亿':
}
转换函数
def chinese_to_number(chinese_str):
number = 0
for char in chinese_str:
if char in chinese_to_number_dict:
number = number * 10 + chinese_to_number_dict[char]
return number
示例使用
print(chinese_to_number('一千一百二十三万六十七')) 输出:
3. 使用自定义函数`chinese_to_number`(适用于中文数字的转换):
```python
示例函数
def chinese_to_number(data):
int_map = {
'一': 1, '二': 2, '三': 3, '四': 4, '五': 5, '六': 6, '七': 7, '八': 8, '九': 9,
'十': 10, '百': 100, '千': 1000,
'万': 10000, '亿':
}
small_map = {
'十': 10, '百': 100, '千': 1000
}
big_map = {
'万': 104, '亿': 108
}
int_size = 1
number = 0
res = 0
for i in data:
if i == '零':
continue
if i in small_map:
number = int_size * small_map[i]
int_size = 0
elif i in big_map:
number = int_size
res = number * big_map[i]
number = 0
int_size = 0
else:
int_size = int(int_map[i])
res = res + number
return res
示例使用
print(chinese_to_number('一千一百二十三万六十七')) 输出:
4. 使用内置函数`int()`和`float()`(适用于简单的数字转换):
```python
示例使用
num_str = '123'
num_int = int(num_str)
print(num_int) 输出:123
num_str = '3.14'
num_float = float(num_str)
print(num_float) 输出:3.14
5. 使用自定义函数`num_to_chinese`(适用于将阿拉伯数字转换为中国汉字表示的数字):