[英]Python read a file replace a string in a word
我正在嘗試讀取以下數據的文件
Et1, Arista2, Ethernet1
Et2, Arista2, Ethernet2
Ma1, Arista2, Management1
我需要閱讀文件Et
替換為Ethernet
, Ma
替換為Management
。 在它們的末尾,數字應相同。 實際輸出如下
Ethernet1, Arista2, Ethernet1
Ethernet2, Arista2, Ethernet2
Management1, Arista2, Management1
我試着用正則表達式的代碼,我能夠得到我可以分析所有的點Et1
, Et2
和Ma1
。 但是無法取代它們。
import re
with open('test.txt','r') as fin:
for line in fin:
data = re.findall(r'\A[A-Z][a-z]\Z\d[0-9]*', line)
print(data)
輸出看起來像這樣。
['Et1']
['Et2']
['Ma1']
import re
#to avoid compile in each iteration
re_et = re.compile(r'^Et(\d+),')
re_ma = re.compile(r'^Ma(\d+),')
with open('test.txt') as fin:
for line in fin:
data = re_et.sub('Ethernet\g<1>,', line.strip())
data = re_ma.sub('Management\g<1>,', data)
print(data)
此示例遵循約瑟夫·法拉(Joseph Farah)的建議
import csv
file_name = 'data.csv'
output_file_name = "corrected_data.csv"
data = []
with open(file_name, "rb") as csvfile:
reader = csv.reader(csvfile, delimiter=',')
for row in reader:
data.append(row)
corrected_data = []
for row in data:
tmp_row = []
for col in row:
if 'Et' in col and not "Ethernet" in col:
col = col.replace("Et", "Ethernet")
elif 'Ma' in col and not "Management" in col:
col = col.replace("Ma", "Management")
tmp_row.append(col)
corrected_data.append(tmp_row)
with open(output_file_name, "wb") as csvfile:
writer = csv.writer(csvfile, delimiter=',')
for row in corrected_data:
writer.writerow(row)
print data
這是您應該采取的步驟:
str.replace()
將字符替換為所需的單詞; 請記住,凡是寫有“ Et”(包括“ ethernet”一詞的開頭)的內容都將被替換,因此請記住考慮這一點。 馬雲和管理層也是如此。 file.write()
將其重新放入文件中。 您可能必須覆蓋原始文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.