我的代码如下所示:
text = 'some random text'
for i in text.split():
i=i.replace('o','O')
print(i)
print(text)
基本上,我要做的就是修改原文。如果我运行这段代码,输出如下所示
sOme
randOm
text
some random text
所以原来的文字是不动的。
我怎么才能修改原文呢?
发布于 2020-09-28 06:13:35
为此,您不需要str拆分。
text = 'some random text'
text = text.replace("o", "O")
之后,您可以执行任何其他操作。
根据以下评论提供最新情况:
open('file.txt','r+', encoding="utf-8") as f:
filedata = f.read()
words = filedata.split()
def change_word(word):
word = word.replace("OLD_DISC", "NEW_DISC")
word = word.replace("'", '"')
word = word.replace("\\","/")
return(word)
words = [change_word(word) if "'OLD_DISC:\\" in word else word for word in words ]
print(words)
新的最新情况:
输入数据:
%MACRO JUNK;
%LET CDNC1 = A ;
%LET CDNC2 = B ;
%LET CDNC3 = C ;
%LET CDNC4 = D ;
%LET CDNC5 = E ;
%LET CDNC6 = F ;
%LET OFF1 = 101101;
%LET OFF2 = 001110;
%LET OFF3 = 011001;
DATA JUNK (DROP =LG AIGP);
LENGTH M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 M11 M12 M13 M14 LG $2. AIGP $1. ;
%DO H=1 %TO 6;
LG = "&&CDNC&H..";
%DO I=1 %TO 3;
%DO E=1 %TO 6;
/* if SUBSTR("&&OFF&I",&E,1) ='1' then */ AIGP = SUBSTR("&&OFF&I",&E,1);
M&E = CATT(LG,AIGP);
M%SYSEVALF(&E+6)= CATT(LG,AIGP);
%IF &E LE 2 %THEN %DO;
AIGP = SUBSTR("&&OFF&I",&E,1);
M%SYSEVALF(&E+12)= CATT(LG,AIGP);
%END;
%END;
%END;
OUTPUT;
%END;
OUTPUT;
RUN;
%MEND;
%JUNK;
代码:
with open('test.txt', 'r+', encoding="utf-8") as f:
filedata = f.readlines()
f.close()
def change_word(word):
word = word.replace("CDNC", "HAHAHAH")
word = word.replace("%", '$')
#word = word.replace("\\","/")
return(word)
filedata = [change_word(word) if "CDNC" in word else word for word in filedata ]
with open('test_finished.txt', 'w', encoding="utf-8") as f:
f.writelines(filedata)
f.close()
产出数据:
%MACRO JUNK;
$LET HAHAHAH1 = A ;
$LET HAHAHAH2 = B ;
$LET HAHAHAH3 = C ;
$LET HAHAHAH4 = D ;
$LET HAHAHAH5 = E ;
$LET HAHAHAH6 = F ;
%LET OFF1 = 101101;
%LET OFF2 = 001110;
%LET OFF3 = 011001;
DATA JUNK (DROP =LG AIGP);
LENGTH M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 M11 M12 M13 M14 LG $2. AIGP $1. ;
%DO H=1 %TO 6;
LG = "&&HAHAHAH&H..";
%DO I=1 %TO 3;
%DO E=1 %TO 6;
/* if SUBSTR("&&OFF&I",&E,1) ='1' then */ AIGP = SUBSTR("&&OFF&I",&E,1);
M&E = CATT(LG,AIGP);
M%SYSEVALF(&E+6)= CATT(LG,AIGP);
%IF &E LE 2 %THEN %DO;
AIGP = SUBSTR("&&OFF&I",&E,1);
M%SYSEVALF(&E+12)= CATT(LG,AIGP);
%END;
%END;
%END;
OUTPUT;
%END;
OUTPUT;
RUN;
%MEND;
%JUNK;
发布于 2020-09-28 06:15:42
如果你想使用分裂,你可以做
text = ' '.join([i.replace('o', 'O') for i in text.split()])
https://stackoverflow.com/questions/64103891
复制相似问题