从Python字符串中删除除后跟句点的数字以外的所有数字
假设我有一个字符串:从Python字符串中删除除后跟句点的数字以外的所有数字,python,regex,string,Python,Regex,String,假设我有一个字符串: some_string = 'lorum ipsum 123 bar foo 1. \ more text 46 here 2. some more text here \ 3. and even more text here 789' 我如何使用正则表达式(或任何其他方法)删除所有数字,除了跟有句点的数字之外 理想结果: some_string = 'lorum ipsum bar foo 1. \
some_string = 'lorum ipsum 123 bar foo 1. \
more text 46 here 2. some more text here \
3. and even more text here 789'
我如何使用正则表达式(或任何其他方法)删除所有数字,除了跟有句点的数字之外
理想结果:
some_string = 'lorum ipsum bar foo 1. \
more text here 2. some more text here \
3. and even more text here'
我是一名正则表达式初学者,只尝试过[0-9]\.
,但这突出了我想要保留的内容
我想以1.
,2.
等形式保留数字
谢谢。我们可以尝试匹配以下模式:
\s*[0-9]+([^.]|$)
在这里,我们匹配一些可选的空格,后跟任意数量的数字,这些数字后跟除点以外的任何字符。我们捕获这个非点字符,然后在替换中使用它
some_string = 'lorum ipsum 123 bar foo 1. \
more text 46 here 2. some more text here \
3. and even more text here 789'
some_string = re.sub(r"\s*[0-9]+([^.]|$)", r"\1", some_string)
print(some_string)
lorum ipsum bar foo 1. more text here 2. some more text here
3. and even more text here
我假设您想要保留的数字从来没有十进制成分。您也可以使用
[0-9](?!\)
作为表达式
这是向前看的一个例子,本质上是询问下一个字符是否不是“。”然后考虑它。
如果您希望有多个数字,例如41。那你也可以用[0-9](?![0-9]+\.|\.)
我会找一个“向后看”和“向前看”的例子,并用一个剧本来测试它
祝你好运 您希望得到什么样的输出:
“1.我喜欢Python 3.7,但不喜欢Python 2.7”
?您将被问到“您尝试了什么?”您希望1到多个不带句点的数字。您可以在此处测试正则表达式,然后使用替换子字符串。发布的问题似乎根本不包括解决问题的任何尝试。StackOverflow希望您能这样做,因为您的尝试有助于我们更好地了解您的需求。请编辑问题以显示您已尝试过的内容,以便说明您在某个问题中遇到的具体问题。有关更多信息,请参阅并获取。因此,如果您有21.42
,您只希望保留1。
,而不是21。
?另外,您需要什么规则来删除123
之前或之后的多余空间,而不是两者都删除(因此,您最终使用的是ipsumbar
而不是ipsumbar
或ipsumbar
?这是所需的空间,因此c64
将保持c64
,或者它应该变成c
?谢谢@TimBiegeleisen-编辑以反映这一点。您可以将第二个正则表达式简化为[0-9](?![0-9]*\)
,.Excellent@TimBiegeleisen完成了一半的步骤,我自己还在学习regexp。