我正在试图读取以下数据的文件
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']发布于 2016-04-21 03:30:45
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)发布于 2016-04-21 03:34:28
这个例子遵循了Joseph的建议
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发布于 2016-04-21 03:19:24
以下是您应该采取的步骤:
str.replace()将字符替换为您想要的单词;请记住,任何写着"Et“的内容(包括”以太网“一词的开头)都会被替换,所以请记住这一点。妈妈和管理层也是如此。file.write()将其放回文件中。您可能必须覆盖原始文件。https://stackoverflow.com/questions/36758933
复制相似问题