python: 在字符串中检测负数

3 投票
3 回答
4341 浏览
提问于 2025-04-16 18:21

我有一些文本文件,里面有这样的行:

STRT .M                 -9.0:  START DEPTH

我想找到负数,并把它替换成0.1。

我可以通过查找'-'来检测负数。

text.count('-')

如果文本中'-'的数量大于0,那就说明有负数。

我的问题是:我该怎么把字符串中的'-9.0'替换成0.1呢?最后,我想输出:

STRT .M                  0.1:  START DEPTH

3 个回答

1

正则表达式可以做到这一点:

>>> 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'

re.sub 的文档

4

看起来你正在处理LAS文件。你可以去看看libLAS,看看它是否适合你使用。这里还有一个教程

6

简单的解决办法是使用 .replace('-9.0','0.1')查看 .replace() 的文档),但我觉得你可能需要一个更灵活的解决方案,基于正则表达式:

import re
new_string = re.sub(r'-\d+\.\d+', '0.1', your_string)

撰写回答