我有兩樣東西想在我的文本檔案中替換。
- 將所有的數字(如1,2,3)替換成單詞(如1,2,3)
- 將所有以*結尾的字符(如:a*,ab*,abc*)替換成單詞(如:alpha,bravo,charlie...zulu)
我在想,除了手工操作外,是否有一種有效的方法(例如:zero_replace = text.replace("0", "ZERO")....,等等
到目前為止,這是我的代碼。
import re
dest1 = r "C:UsersCLDesktopFolder"/span>
files = os.listdir(dest1)
space_p = r "w{1}"
for f in files:
text= open(dest1 "/span> f,"r"/span>)
text_read = text.read()
#print(text_read)/span>
#num pattern[/span
zero_pattern = text.replace("0"/span>, "ZERO")
#char pattern *
char_find = text.findall(.r"...*", ? ? ? ) #獲取所有以*結尾的單詞。
char_pattern = text.replace(???, char_find)
示例.txt
我有111蘋果。
abc*
輸出需要
我有一個一個的蘋果。
alpha bravo charlie
uj5u.com熱心網友回復:
這里有一個使用重碼的作業方案。你的第三個條件是模糊的,所以我暫時沒有包括它,請編輯問題以提高清晰度。
我總結了一下,我在這里使用了re.sub,將一個函式作為repl傳遞,結合字典進行自定義替換。
import re
numbers = {'1': 'one', '2': '二'/span>, '三'/span>: '三'}。# 只有1/2/3作為例子。
信件 = {'a': 'alpha'/span>, 'b'/span>: 'bravo', 'c': 'charlie'}。
with open('sample.txt') as f.
text = f.read()
# 將數字替換為單詞。
text = re.sub('[%s]s?' % '.join(numbers), lambda x: numbers[x.group().strip()] ' ' /span>, text)
# 用擴展形式替換abc*。
text = re.sub('w *', lambda x: ' '.join(letters.get(i, '?') fori in x.group()[:-1]), text)
print(text)
輸出:
我有一個一個的蘋果。
alpha bravo charlie
拼成as abc
uj5u.com熱心網友回復:
我喜歡這種型別的問題,因此,
第一個問題
def num_to_letter(string)。
num = {1:'one',2:'wo',3: '三',4:'四',5: '五',6: '六',7:'七',8: '八',9:'九',0:'零'}。
for i in string:
if i.isnumeric():
string = string.replace(i,num[int(i)] ' '/span>)
return string.replace(' '/span>,' ')
第二個問題
def letters_to_name(string)。
num = {'a': 'alpha'/span>, 'b'/span>: 'bravo', 'c': 'charlie'}。
for i in string:
if i.isnumeric():
string = string.replace(i,num[int(i)] ' '/span>)
return string.replace(' '/span>,' ')
第三個問題
def spaces(string)。
return string.replace('abc',' '.join(list('abc') )
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/323762.html
標籤:
