我有一个文本文件,其中有这样的一行-
time time B2CAT_INLET_T\CAN-Monitoring:1 B1CAT_MIDBED_T\CAN-Monitoring:1 B1CAT_INLET_T\CAN-Monitoring:1 B1CAT_OUTLET_T\CAN-Monitoring:1 time APEPFRPP\CCP:1 KDFILRAW\CCP:1
当我使用阅读时
lines = txtfile.readlines()
我得到线=
'time\ttime\tB2CAT_INLET_T\\CAN-Monitoring:1\tB1CAT_MIDBED_T\\CAN-Monitoring:1\tB1CAT_INLET_T\\CAN-Monitoring:1\tB1CAT_OUTLET_T\\CAN-Monitoring:1\ttime\tAPEPFRPP\\CCP:1\tKDFILRAW\\CCP:1\t\t'
因此'\'显示为'double \',而标签显示为'\ t'
由此,我想删除'\ CAN-Monitoring:1'和'\ CCP:1'的所有实例,并按原样保留选项卡。
我有一个代码遍历'lines'的每个元素并获取每个'double \'和'\ t'的索引
然后我尝试使用lines.replace('double \'的索引:'\ t'的索引,'')
但是这似乎没有我想要的效果。
到目前为止是我的代码:
# Reading from text file
txtfile = open('filename.txt', 'r')
lines = txtfile.readlines()
textToModify = lines
# This gives indices of all '\\' and '\t'
doubleslash = []
tab = []
for i, item in enumerate(textToModify):
if textToModify[i] == '\\':
doubleslash.append(i)
for i, item in enumerate(textToModify):
if textToModify[i] == '\t':
tab.append(i)
# Should find text beginning with '\\' until '\t' only
itemSlashBegin = []
itemTabBegin = []
for itemSlash in doubleslash:
for itemTab in tab:
if itemSlash < itemTab:
break
itemSlashBegin.append(itemSlash)
itemTabBegin.append(itemTab)
# Trying to replace '\\'text'\t' in the original text
for i,item in enumerate(itemSlashBegin):
ModifiedTxt = textToModify.replace([item:itemTabBegin[i]],"")
我确信还有一种更优雅的方法;但我找不到它。
[请给我一些解决方案。
谢谢
R
只需在此处使用re.sub
:
out = re.sub(r'\\CAN-Monitoring:1|\\CCP:1', '', inp)
print(out)
此打印:
time time B2CAT_INLET_T B1CAT_MIDBED_T B1CAT_INLET_T B1CAT_OUTLET_T time APEPFRPP KDFILRAW
请注意,双反斜杠和\t
只是如何在Python字符串中表示文字反斜杠和制表符。