【问题标题】:How do I browse a column of strings and convert any integers to the word in Python?如何浏览一列字符串并将任何整数转换为 Python 中的单词?
【发布时间】:2021-02-24 22:44:15
【问题描述】:
我正在创建一个将遍历一列字符串的函数。在其中一些字符串中有数字,而有些字符串则没有。如果一个字符串包含一个数字,我想将该数字更改为文本版本(即“我被搁置了 20 分钟”到“我被搁置了 20 分钟”)
这是我到目前为止所拥有的,但我认为 isdigit() 正在查看整个字符串而不是字符串中的标记。
import inflect
def int_to_word(words):
p = inflect.engine()
new_words = []
for word in words:
if word.isdigit():
new_word = p.number_to_words(word)
new_words.append(new_word)
else:
new_words.append(word)
return new_words
【问题讨论】:
-
-
您已经发现了问题;你为什么不尝试修复它?将字符串拆分为标记是一个有据可查的过程。请从intro tour 重复on topic 和how to ask。 “告诉我如何解决这个编码问题”不是堆栈溢出问题。我们希望您做出诚实的尝试,然后然后就您的算法或技术提出一个具体的问题。 Stack Overflow 无意取代现有的文档和教程。
标签:
python
python-3.x
nlp
tokenize
【解决方案1】:
这完全取决于您传递给int_to_words 的输入,您的问题中没有包含这些输入。
输入:string
您需要将您的字符串拆分为一个列表,该列表由空格分隔。这样可以确保您迭代的是整个数字,而不是字符串的单个字符。
def int_to_word(words):
p = inflect.engine()
new_words = []
for word in words.split():
if word.isdigit():
new_words.append(p.number_to_words(word))
else:
new_words.append(word)
return ' '.join(new_words)
print(int_to_word('I was on hold for 20 minutes'))
#I was on hold for twenty minutes
输入:list
对于句子列表,您将需要添加额外的迭代。
def int_to_word(words):
p = inflect.engine()
result = []
for element in words:
new_words = []
for word in element.split():
if word.isdigit():
new_words.append(p.number_to_words(word)
)
else:
new_words.append(word)
result.append(' '.join(new_words))
return result
print(int_to_word(['I was on hold for 20 minutes', '1 2 3']))
#['I was on hold for twenty minutes', 'one two three']