Python 从字符串中删除与字母混合的数字

Python 从字符串中删除与字母混合的数字,python,regex,string,Python,Regex,String,假设我有一个字符串,例如: string = 'This string 22 is not yet perfect1234 and 123pretty but it can be.' 我想从我的字符串中删除与单词混合的任何数字,例如'perfect1234'和'123pretty',,但不是'22',并获得如下输出: string = 'This string 22 is not yet perfect and pretty but it can be.' 在Python中是否有任何方法可以

假设我有一个字符串,例如:

string = 'This string 22 is not yet perfect1234 and 123pretty but it can be.'
我想从我的字符串中删除与单词混合的任何数字,例如
'perfect1234'
'123pretty'
,但不是
'22'
,并获得如下输出:

string = 'This string 22 is not yet perfect and pretty but it can be.'
在Python中是否有任何方法可以使用正则表达式或任何其他方法来实现这一点?任何帮助都将不胜感激。谢谢大家!

import re
re.sub(r'\d+', '', string)
因此:

'This string 22 is not yet perfect and pretty but it can be.'

下面的代码检查每个字符是否有数字。如果不是数字,则将字符添加到已更正字符串的末尾

string = 'This string is not yet perfect1234 and 123pretty but it can be.'

CorrectedString = ""
for characters in string:
    if characters.isdigit():
        continue
    CorrectedString += characters

您可以通过简单地连接函数以及不导入任何内容来尝试这一点

str_var='This string 22 is not yet perfect1234 and 123pretty but it can be.'

str_var = ' '.join(x for x in str_var.split(' ') if x.isdigit() or x.isalpha())
print str_var
输出:

'This string 22 is not yet perfect and pretty but it can be.'

如果您想保留自己的数字(不是包含字母字符的单词的一部分),这个正则表达式可以完成这项工作(但可能有一种方法可以让它更简单):

在这里,45被保留,因为它不是单词的一部分。

print(“”.join(如果不是x.isdigit(),则在strng中x代表x)。replace(“”,)

p、 s.删除数字后..将双空格替换为单空格

输出:

'This string 22 is not yet perfect and pretty but it can be.'

这个字符串还不完美,但它可以完美。

请看这里:似乎OP只想删除单词中的数字,而不是字符串中的任何数字。(词语边界问题)然而,这不是一个问得很好的问题@PJay,你试过什么花样吗?您的代码有哪些问题?另外,请检查。我想删除与字母或任何其他非字母数字字符(如“700/-”)混淆的任何数字。事实上,我还想删除字符串中的所有号码,例如格式为“+91…”的电话号码。你也能帮我处理一下这个格式吗?我的字符串中出现的任何类型的数字都需要删除。应该为regex
r'\d+'
使用原始字符串文本,这不会检查数字是否是包含字母字符的单词的一部分(这似乎是有意的)@Keozon是的,原始字符串更好,我会更改我的答案。但是“数字是一个词的一部分”是什么意思,你能举个例子吗?谢谢你的帮助!我不想在我的字符串中保留任何具有以下格式的内容:“700/-”、“+911234567891”、“3appeared”、“vora0261794300will”。处理后字符串中不应出现数字或单词,如示例中的最后两个。比正则表达式(IMO)更复杂,但在Python中可能更快。回答得好,而且我认为它更符合OP的原意。@PJay:不,它没有,它也只删除数字。@PJay:不,它不起作用,它也只删除数字。
import re
pattern = re.compile(r"\d*([^\d\W]+)\d*")
s = "This string is not yet perfect1234 and 123pretty but it can be. 45 is just a number."
pattern.sub(r"\1", s)
'This string is not yet perfect and pretty but it can be. 45 is just a number.'