如何在Python中使用word2number库保留字符串其余内容
解决word2number转换时丢失非数字文本的问题
我太懂你这个痛点了——用word2number的word_to_num方法直接转换整串文本时,它只会识别并返回数字部分,非数字内容(比如你这里的"house")直接就被丢弃了。不过咱们换个思路,就能轻松保留所有内容,同时把数字单词转成字面量。
核心思路
把字符串拆成单个单词,逐个判断处理:
- 如果是数字单词(比如"one"、"three"),就用
word2number转换成数字; - 如果不是数字单词,直接原封不动保留;
- 最后把处理后的所有单词重新拼接成完整字符串。
具体实现代码
首先确保你已经安装了word2number(没装的话先跑这个命令):
pip install word2number
然后用这个自定义函数处理文本:
from word2number import w2n def convert_num_words_preserve_text(input_string): # 把字符串拆成单词列表 word_list = input_string.split() processed_words = [] for word in word_list: try: # 尝试将单词转换为数字 converted_num = w2n.word_to_num(word) processed_words.append(str(converted_num)) except ValueError: # 转换失败,说明不是数字单词,直接保留原单词 processed_words.append(word) # 把处理后的单词拼接回字符串 return ' '.join(processed_words)
测试示例
比如你的输入是"one house",测试一下:
original_text = "one house" result_text = convert_num_words_preserve_text(original_text) print(result_text) # 输出: 1 house
这个方法还能处理更复杂的场景,比如输入"five red houses and two blue cars",会输出"5 red houses and 2 blue cars",完美保留所有非数字内容~
内容的提问来源于stack exchange,提问作者Tigran
相关产品推荐
相关产品推荐

