如果出现符号,请将单词(字符串)的一部分更改为其他字符串。蟒蛇

时间:2019-04-01 14:44:51

标签: python

如果出现字符“ /devices/ered34wa/logs”,我如何最有效地切出单词的一部分,如果出现字符“ =#=”,则完成切单词的效果如何?例如:

通过大字符串

=#=

python代码返回:

'321@5=85@45@41=#=I-LOVE-STACK-OVER-FLOW=#=3234@41@=q#$^1=@=xx$q=@=xpa$=4319'

任何帮助将不胜感激。

3 个答案:

答案 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])