如果出现字符“ /devices/ered34wa/logs
”,我如何最有效地切出单词的一部分,如果出现字符“ =#=
”,则完成切单词的效果如何?例如:
通过大字符串
=#=
python代码返回:
'321@5=85@45@41=#=I-LOVE-STACK-OVER-FLOW=#=3234@41@=q#$^1=@=xx$q=@=xpa$=4319'
任何帮助将不胜感激。
答案 0 :(得分:1)
使用split()
:
s = '321@5=85@45@41=#=I-LOVE-STACK-OVER-FLOW=#=3234@41@=q#$^1=@=xx$q=@=xpa$=4319'
st = '=#='
ed = '=#='
print((s.split(st))[1].split(ed)[0])
使用regex
:
import re
s = '321@5=85@45@41=#=I-LOVE-STACK-OVER-FLOW=#=3234@41@=q#$^1=@=xx$q=@=xpa$=4319'
print(re.search('%s(.*)%s' % (st, ed), s).group(1))
输出:
I-LOVE-STACK-OVER-FLOW
答案 1 :(得分:1)
除了@DirtyBit的答案外,如果您还想处理2个以上'=#='的情况,则可以拆分字符串,然后添加其他所有元素:
import pandas as pd
df = pd.read_excel('bb.xlsx')
jobs = set(df['Job']) #remove duplicates
result = [[[ (df['M1'][i],0), (df['M2'][i],1), (df['M3'][i],2) ] for i in df.index if df['Job'][i] == job] for job in jobs]
print(result)
s = '321@5=85@45@41=#=I-LOVE-STACK-OVER-FLOW=#=3234@41@=q#$^1=@=xx$q=@=xpa$=4319=#=|I-ALSO-LOVE-SO=#=3123123'
parts = s.split('=#=')
print(''.join([parts[i] for i in range(1,len(parts),2)]))
答案 2 :(得分:0)
说明在代码中。
import re
ori_list = re.split("=#=",ori_str)
# you can imagine your goal is to find the string wrapped between signs of "=#="
# so after the split, the even number position must be the parts outsides of "=#="
# and the odd number position is what you want
for i in range(len(ori_list)):
if i%2 == 1:#odd position
print(ori_list[i])