【问题标题】: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

【问题讨论】:

  • 什么是words 输入。是列表吗?
  • 您已经发现了问题;你为什么不尝试修复它?将字符串拆分为标记是一个有据可查的过程。请从intro tour 重复on topichow 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']

【讨论】:

    猜你喜欢
    • 2013-11-06
    • 2019-02-18
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    相关资源
    最近更新 更多