内检测到负数所以我有一些文本文件这样一行:蟒蛇:字符串
STRT .M -9.0: START DEPTH
我想检测负数,并用0.1替换它。
我可以检测负号,简单地通过查找 ' - '
text.count('-')
如果text.count( ' - ')> 0,有一个负数。
我的问题是:如何替换数字为0.1的字符串中的'-9.0'?最后,我想输出:
STRT .M 0.1: START DEPTH
内检测到负数所以我有一些文本文件这样一行:蟒蛇:字符串
STRT .M -9.0: START DEPTH
我想检测负数,并用0.1替换它。
我可以检测负号,简单地通过查找 ' - '
text.count('-')
如果text.count( ' - ')> 0,有一个负数。
我的问题是:如何替换数字为0.1的字符串中的'-9.0'?最后,我想输出:
STRT .M 0.1: START DEPTH
简单的解决方案是用户.replace('-9.0','0.1')
(see documentation for .replace()
),但我认为你需要更灵活基于正则表达式的解决方案:
import re
new_string = re.sub(r'-\d+\.\d+', '0.1', your_string)
同意。我应该更清楚。负数可以是任何负数。 – 2011-05-26 00:59:05
@Flux它也可以是整数? – Tadeck 2011-05-26 01:00:04
好问题。我怀疑这是一个整数,但我不能100%确定,因为我没有查看每个〜200个文件。 – 2011-05-26 01:06:32
正则表达式可以做到这一点:
>>> import re
>>> regex = re.compile(r' -\d+(\.\d+)?:')
>>> regex.sub(' 0.1:', 'STRT .M -9.0: START DEPTH')
'STRT .M 0.1: START DEPTH'
>>> regex.sub(' 0.1:', 'STRT .M -19.01: START DEPTH')
'STRT .M 0.1: START DEPTH'
>>> regex.sub(' 0.1:', 'STRT .M -9: START DEPTH')
'STRT .M 0.1: START DEPTH'
如果负数是ANY负数而不仅仅是-9.0,这项工作是否可行? – 2011-05-26 00:58:40
请注意,这不适用于例如'-10.0',更不用说'-9'(无小数位)。修复很简单,如果它不是固定宽度的,但OP没有指定... – 2011-05-26 00:59:37
它已被[修订](http://stackoverflow.com/posts/6132632/revisions)现在似乎是能够做到这一点。 – joar 2011-05-26 09:29:49
注意:负数在不同文件之间有所不同。它并不总是-9.0。 – 2011-05-26 00:59:37
这是固定宽度吗? (也就是说,如果替换的字符不像原始字符那么多,那么这很重要吗?) – 2011-05-26 01:00:17
不,它可能是-9.0,-10.1,-11.123等等,所以我需要一个通用的解决方案来替换任何负的十进制数与0.1。 – 2011-05-26 01:04:07