![](/img/trans.png)
[英]How to get only the alphanumeric characters that are before any special characters in a string?
[英]Get string after and before a special Characters in Python
我有以下字符串,從該字符串我想要DDD =和%之間的所有數據
2019-07-25 15:23:13 [Thread-0] DEBUG - Serial : INFO: QQQ=00000D00001111 AAA=8 BBB=0 CCC=0 DDD=1.08% XXX=2401
我試圖使用以下代碼但無法獲得所需的輸出
my_string="2019-07-25 15:23:13 [Thread-0] DEBUG - Serial : INFO: QQQ=00000D00001111 AAA=8 BBB=0 CCC=0 DDD=1.08% XXX=2401"
print(my_string.split("DDD=",1)[1])
獲得以下輸出
1.08% XXX=2401
但我看輸出為
either 1.08 or 1.08%
請幫幫我
使用正則表達式。
例如:
import re
s = "2019-07-25 15:23:13 [Thread-0] DEBUG - Serial : INFO: QQQ=00000D00001111 AAA=8 BBB=0 CCC=0 DDD=1.08% XXX=2401"
m = re.search(r"DDD=(.*?)%", s) #if you want it to be strict and get only ints use r"DDD=(\d+\.?\d*)%"
if m:
print(m.group(1))
輸出:
1.08
這是一個使用split
兩次而不是正則表達式的選項。 它雖然不是非常靈活,但如果輸入格式略有變化,很容易破壞。 您可以決定哪種選項最適合您的用例。
s = "2019-07-25 15:23:13 [Thread-0] DEBUG - Serial : INFO: QQQ=00000D00001111 AAA=8 BBB=0 CCC=0 DDD=1.08% XXX=2401"
print(s.split('DDD=')[1].split('%')[0])
結果:
'1.08'
根據您計划對數字執行的操作,您可能還希望將其強制轉換為數字類型:
print(float(s.split('DDD=')[1].split('%')[0]))
結果:
1.08
要匹配DDD =和%之間的所有數據 :
import re
test_str = "2019-07-25 15:23:13 [Thread-0] DEBUG - Serial : INFO: QQQ=00000D00001111 AAA=8 BBB=0 CCC=0 DDD=1.08% XXX=2401"
m = re.search(r"DDD=([^%]+)%", test_str)
ddd = m.group(1) if m else m
print(ddd) # 1.08
使用字符串查找操作:
例
my_string="2019-07-25 15:23:13 [Thread-0] DEBUG - Serial : INFO: QQQ=00000D00001111 AAA=8 BBB=0 CCC=0 DDD=1.08% XXX=2401"
fst = my_string.find("DDD=")
snd = my_string.find("%")
if fst >= 0 and snd >= 0
print(my_string[fst+4,snd])
產量
1.08
或者您可以使用拆分:
例
my_string="2019-07-25 15:23:13 [Thread-0] DEBUG - Serial : INFO: QQQ=00000D00001111 AAA=8 BBB=0 CCC=0 DDD=1.08% XXX=2401"
(fst,snd) = my_string.split("DDD=");
(trd,fourth) = snd.split("%");
print(trd)
產量
1.08
my_string="2019-07-25 15:23:13 [Thread-0] DEBUG - Serial : INFO:
QQQ=00000D00001111 AAA=8 BBB=0 CCC=0 DDD=1.08% XXX=2401"
output1 = print(my_string.split("DDD=")[1][:5])
#output1 =1.08%
#output2 = print(my_string.split("DDD=")[1][:4])
#output2 =1.08
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.