我在 python 中有一個字串串列,ABC_###
其中 ### 是 1-999 之間的數字。我想從數字中洗掉 _ 和任何前導 0,基本上是任何_
, _0
,或_00
獲取格式ABC 4
or ABC 909
。我可以想到幾種愚蠢的方法來做到這一點,但沒有聰明的方法,所以我在這里:)
uj5u.com熱心網友回復:
您可以使用此正則運算式:
_0*
匹配零個或多個0
后的_
,并將其替換為' '
.
import re
strs = ['ABC_2545', 'ABC_001', 'ABC_04']
for s in strs:
print(re.sub(r'_0*', ' ', s))
輸出:
ABC 2545
ABC 1
ABC 4
uj5u.com熱心網友回復:
只要格式一致,那么使用string
'split
方法就可以了。
my_list = ['ABC_001', 'DEF_023']
new_format = (f'{letters} {int(nums)}' for letters, nums in (elem.split('_') for elem in my_list))
print(list(new_format))
字串由生成器回傳。在這種情況下轉換為要列印的串列。
['ABC 1', 'DEF 23']
* 已編輯以回傳格式化的字串而不是元組。
uj5u.com熱心網友回復:
如果您的串列不是 Python 串列,并且它存盤在每個元素一行的檔案中,請嘗試以下操作:
import re
fi = open('myList.txt', 'r')
fo = open('myNewList.txt', 'w ')
for line in fi:
fo.writelines(re.sub(r'_0*', ' ', line))
fi.close()
fo.close()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/519983.html
標籤:Python正则表达式
上一篇:Javascript-替換字串中的單詞,除非該單詞包含在引號中
下一篇:用正則運算式替換不同的字符?