在文本文件中按字符串替换数字

时间:2017-03-15 14:32:30

标签: python

给定一个字符串作为输入,我想找到并转换该字符串num的整数元素。这是一个例子:

输入:

"abc 123 def 1 in 1s and 100MB"

输出:

"abc >num< def >num< in 1s and 100MB"

我该怎么做?

2 个答案:

答案 0 :(得分:3)

就是这样。

text_in = "abc 123 def 1 in 1s and 100MB"
text_out = ' '.join(['>num<' if x.isnumeric() else x for x in text_in.split()])
print(text_out)  # prints: abc >num< def >num< in 1s and 100MB

我冒昧地假设您可以从文件中读取文本,并且还可以将新文本写入文件,以便我跳过这些部分。

这一切都归结为使用isnumeric()

答案 1 :(得分:1)

使用regular expression

import re

s = "abc 123 def 1 in 1s and 100MB"

print(re.sub(r"\b\d+\b", ">num<", s))
# output: "abc >num< def >num< in 1s and 100MB"

正则表达式字符串r"\b\d+\b"匹配由字边界(\d+)包含的至少一个数字字符(\b)组成的字符串。 \b部分也匹配字符串的开头和结尾。

re.sub()的调用用第二个参数(s)替换第三个参数">num<"中匹配字符串的所有匹配项。