① python如果含有兩個相同字母,如何將其中一個替換成其他字元
採取的演算法是:將第一和除其之外的每個字母對比,相同即記下替換後的word,依次下推(第二和第三、第四。。。),逐個修改映射list
#coding:utf8
if__name__=='__main__':
words=['school','google','getfileinfo','cherrypy','pypy']
printwords
tmps=words #映射list,存放替換大小寫後的list
index=0 #list遍歷到第幾個了
forwdsinwords: #遍歷words
i=0 #記錄list下的每個word長度
j=0 #記錄每個word有幾個相同的字母數
#下面採取的演算法是:將第一和除其之外的每個字母對比,相同即記下替換後的word,依次下推(第二和第三、第四。。。),逐個修改映射list:tmps
forwd_ainwds[i:]:
forwd_binwds[i+1:]:
ifwd_a==wd_b:
#printwds,wd_a.upper()
j+=1
ifj>1: #相同字母超過一個的,需要沿用之前修改好的word,否則最後記錄的將是最後一個相同字母轉大寫的word
tmp=tmp.replace(wd_a,wd_a.upper(),1)
else:
tmp=wds.replace(wd_a,wd_a.upper(),1)
#printtmp
tmps[index]=tmp #修改映射list:tmps
i+=1
index+=1
printtmps
運行結果:
['school', 'google', 'getfileinfo', 'cherrypy', 'pypy']
['schOol', 'GOogle', 'gEtFIleinfo', 'cheRrYpy', 'PYpy']
演算法二:
#coding:utf8
if__name__=='__main__':
words=['school','google','getfileinfo','cherrypy','pypy']
printwords
tmps=words #映射list,存放替換大小寫後的list
#演算法二
#下面採取的演算法是:先將單詞序列化,然後排序,接著採取兩兩相比較,減少比較次數,同時遇到相同字母的就跳到下一組對比
index=0
forwordinwords:
letters=[]
forwdinword:
letters.append(wd)
letters.sort()
#printletters
j=0
flag=False
foriinrange(len(letters)-1):
ifflag:
flag=False #重置跳過標記
continue #第一和第二位字母相同,那就沒必要再比較第二和第三位字母了,直接跳過比較第三和第四位字母
#printletters[i],letters[i+1]
ifletters[i]==letters[i+1]:
j+=1
ifj>1:
tmp=tmp.replace(letters[i],letters[i].upper(),1)
else:
tmp=word.replace(letters[i],letters[i].upper(),1)
#printtmp
tmps[index]=tmp
flag=True #jumpflag
index+=1
printtmps
測試了下運行時間,words在145個時,運行時間對比:
Time2: 0.0160000324249
Time2: 0.0150001049042
Time2: 0.0149998664856
Time1: 0.0160000324249
Time1: 0.0159997940063
Time1: 0.0150001049042
可見演算法二的最少運行時間比演算法一少,要快
② 關於Python,怎樣才能把字元串中某一個重復的字元都替換
#-*-coding:utf-8-*-
numbers='0123456789'
a="r1.5ml.in.9it"
file=[]
foriina:
file.append(i)
printfile
foridx,iinenumerate(file):
#先前是因為第二次index('.')的時候,獲取的還是第一個點
ifi=='.'andi!=file[-1]andfile[idx+1]innumbers:
file[idx]='*'
else:
i=i
print(file)
如果解決了您的問題請採納!
如果未解決請繼續追問
③ python 查找字元串並將其替換
f1=open('J:/wenjian/1/1.txt','r')
for line in f1
你這里是不是少了點什麼,f1隻是文件句柄,需要執行讀操作才能遍歷,
調用readlines()
確實有更好的代碼,那就是使用re.sub,它同時包含了查找和替換兩步的操作,
而不是像你寫的那樣的字元串比較性能那麼低
④ python特殊符號的更改,替換
def secname(name):
SecName = name.replace('/', '')
SecName = SecName.replace('*', '')
SecName = SecName.replace('<', '(')
SecName = SecName.replace('>', ')')
SecName = SecName.replace('"', '')
SecName = SecName.replace(':', '-')
SecName = SecName.replace('\\', '')
SecName = SecName.replace('|', '')
SecName = SecName.replace('?', '')
return SecName
⑤ Python如何替換list中的字元
利用re庫進行正則表達替換,python3.4中
importre
a=["123","456","789"]
d={"B":"2","E":"5","H":"8"}
b=",".join(a)
print(b)
foriind.keys():
b=re.sub(d[i],i,b)
print(b.split(","))
⑥ Python3 - 字元串中的變數替換
創建一個內嵌變數的字元串,指定字元串替換掉變數。
Python並沒有對在字元串中簡單替換變數值提供直接的支持。 通過使用字元串的 format() 方法來解決這個問題。比如:
或者,如果被替換的變數能在變數域中找到, 那麼可以結合使用 format_map() 和 vars() 。就像下面這樣:
format() 和 format_map() 的一個缺陷就是它們並不能很好的處理變數缺失的情況,比如:
在python3中,有一種可讀性更強,更方便的替代方法,在字元串前加 f ,需要被替代的變數外加花括弧 {} ,其命名與替代變數的名稱相同
多年以來由於Python缺乏對變數替換的內置支持而導致了各種不同的解決方案。在Python3中,推薦使用在字元串前加 f 的方法。
⑦ python編寫一個自動替換word文檔文字程序
編者的話(可以跳過):
在政府單位實習了一段時間,發現有很多資料需要製作,而且繁瑣重復,第一時間就想到了python,因為在辦公自動化這方面我只知道python,本著能偷懶就偷懶的原則,通過查閱資料整出一個小腳本然後用tkinter的ui組件寫了一個界面方便除我之外的人使用,此軟體涉及內部文件就不發布了。截圖如下:
需求如下:
當你有一大堆的word文檔,然後這些word文檔都有其固定格式,也許是一個表格,也許就是只有文字的普通文檔,這些固定模式的文檔我稱之為模板。如果有10份模板,這些模板的填寫內容大致相同,比如說文件的編號,年份,一些公司名稱等。然後基本上就是機械的找位子復制改改格式循環往復然後時間就過去了,做了一堆無意義的事情。
所以核心功能:需要把自己想要填寫的內容填寫到模板的指定位置。
2、實現方式
2.1使用python-docx
有興趣的可以深入學習一下python-docx,這里僅僅是實現需求。python-docx只能處理docx所以doc需要轉為docx具體方法可以自行網路。
這個替換程序是可以替換word文檔內表格和非表格的內容且不會修改原模板的任何格式,填寫好上面所給函數的參數然後在ide里運行一下,前提是事先在文檔中要填寫的位置寫好要替換的內容,也就是old_text,如下所示:
⑧ 如何用Python來進行查詢和替換一個文本字元串
1、說明
可以使用find或者index來查詢字元串,可以使用replace函數來替換字元串。
2、示例
1)查詢
>>> 'abcdefg'.find('cde')
結果為2
'abcdefg'.find('acde')
結果為-1
'abcdefg'.index('cde')
結果為2
2)替換
'abcdefg'.replace('abc','cde')
結果為'cdedefg'
3、函數說明
1)find(...)
S.find(sub[, start[, end]]) -> int
返回S中找到substring sub的最低索引,使得sub包含在S [start:end]中。 可選的 參數start和end解釋為切片表示法。
失敗時返回-1。
2)index(...)
S.index(sub[, start[, end]]) -> int
與find函數類似,但是當未找到子字元串時引發ValueError。
3)replace(...)
S.replace(old, new[, count]) -> str
返回S的所有出現的子串的副本舊換新。 如果可選參數計數為給定,只有第一個計數出現被替換。