如何将字符串中的特定数字转换为字符串;NUM";用Python
为了创建巴比伦文字的数据库,我需要清除一些文字并标记它们。我可以做托卡尼化,但在编写清理脚本的过程中,我遇到了一个问题 我想清除所有的数字,因为它们对我来说没有真正的意义(可能只是它们有多少只羊),但重要的是将数字保留在如何将字符串中的特定数字转换为字符串;NUM";用Python,python,text,Python,Text,为了创建巴比伦文字的数据库,我需要清除一些文字并标记它们。我可以做托卡尼化,但在编写清理脚本的过程中,我遇到了一个问题 我想清除所有的数字,因为它们对我来说没有真正的意义(可能只是它们有多少只羊),但重要的是将数字保留在中 假设我有以下文本: hello 502world a0.0.3b.1.4 5 我想把它转到: hello NUMworld aNUMb NUM 5 请注意,0.0.3和.1.4除了也变成NUM的502之外,还变成了NUM,但在的内部,我想保持数字不变 文本中有非ASCII字符
中
假设我有以下文本:
hello 502world a0.0.3b.1.4 5
我想把它转到:
hello NUMworld aNUMb NUM 5
请注意,0.0.3
和.1.4
除了也变成NUM的502
之外,还变成了NUM
,但在
的内部,我想保持数字不变
文本中有非ASCII字符,这使得它更难处理
我试着自己写一些代码来处理它,但它变得非常烦人,我认为有更多的Pythonic
方法可以做到这一点
这是一个文本示例。使用函数的解决方案:
import re
s = "hello 502world a0.0.3b .1.4 <sub>5</sub>"
replaced = re.sub(r'(NUM){2,}', 'NUM', re.sub(r'(?<!<sub>)\.?\d+', 'NUM', s))
print(replaced)
重新导入
s=“你好502world a0.0.3b.1.4 5”
已替换=re.sub(r'(NUM){2,}',NUM',re.sub(r'(?)\.?\d+',NUM',s))
打印(已替换)
输出:
hello NUMworld aNUMb NUM <sub>5</sub>
hello NUMworld aNUMb NUM 5
一个简单的正则表达式就可以做到这一点:
re.sub(r'(\.?\d+)+', 'NUM', "hello 502world a0.0.3b .1.4")
#'hello NUMworld aNUMb NUM'
您并没有真正“标记化”它,因为输出不是一个标记列表,它只是一个修改过的字符串。所以只需使用正则表达式来修改字符串。如果你想标记化,我的答案可能会有所不同。我已经把每件事都标记了,但我需要再过滤一点。我讨厌成为一个无赖,但我需要保存号码,因为他在5我不理解你的评论。至少不是它的第二部分。我改变了问题,请再看一遍。还有什么其他数字不应该被替换?OP已经改变了忽略“子”标签内数字的请求。使正则表达式变得更难。