如何在python文本预处理期间保留十进制数?(已编辑)

2024-05-16 11:12:58 发布

您现在位置:Python中文网/ 问答频道 /正文

def text_process(text):  
    text = text.translate(str.maketrans('', '', string.punctuation))
    return " ".join(text)

输入文本:“交易值为-RS.3456.63”

Output:'交易值为345663卢比'

有人能建议我如何在文本预处理期间删除特殊字符(包括“.”),但保留小数吗?你知道吗

必需输出:“事务值为3456.63卢比”


Tags: text文本outputstringreturndef交易process
2条回答

如果我正确理解您的问题,则此代码适用于您:

text = 'Transaction value was, - 3456.63 Rupees'

regex = r"(?<!\d)[" + string.punctuation + "](?!\d)"
result = re.sub(regex, "", text)
# output: 'Transaction value was  3456.63 Rupees'

要解决第二个问题,请尝试使用以下技巧:

text = 'Transaction value was, - Rs.3456.63'

regex_space = r"([0-9]+(\.[0-9]+)?)"
regex_punct = r'[^\w.]+'

re.sub(r'[^\w.]+', ' ', re.sub(regex_space,r" \1 ", text).strip())
# output: 'Transaction value was Rs. 3456.63 Rupees'

您可以使用更通用的正则表达式来替换除以下字符以外的所有特殊字符。你知道吗

import re
def text_process(text):  
    text = re.sub('[^\w.]+', ' ', text)
    return text

s = 'Transaction: value* #was - 3456.63 Rupees'
text_process(s)

你得到了吗

'Transaction value was 3456.63 Rupees'

EDIT:下面的函数只返回带小数的数字。你知道吗

def text_process(text):  
    text = re.sub('[^\d.]+', '', text)
    return text

s = 'Transaction: value* #was - 3456.63 Rupees'
text_process(s)

'3456.63'

相关问题 更多 >