內檢測到負數所以我有一些文本文件這樣一行:蟒蛇:字符串
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