我没有使用Python,但我在python中有脚本:
脚本的一部分
elif line.find("CONECT") > -1:
con = line.split()
line_value = line_value + 1
#print line_value
#print con[2]
try:
line_j = "e" + ', ' + str(line_value) + ', ' + con[2] + "\n"
output_file.write(line_j)
print(line_j)
line_i = "e" + ', ' + str(line_value) + ', ' + con[3] + "\n"
output_file.write(line_i)
print(line_i)
line_k = "e"+ ', ' + str(line_value) + ', ' + con[4] + "\n"
print(line_k)
output_file.write(line_k)
except IndexError:
continue
以格式
提供.txt输出e, 1, 2
e, 1, 3
e, 1, 4
e, 2, 1
e, 2, 3
etc.
我需要删除具有相同数字的类似行,但无论是订购此数字
即。 e,2,1,...
有可能吗?
答案 0 :(得分:0)
当然,最好在您将代码写入文件之前修改代码以删除这些代码行。您可以使用列表存储已保存的值,并且在每次迭代时,如果您要添加的值已存在于该列表中,则执行搜索。以下代码未经过测试和优化,但它解释了一个想法:
# 'added = []' should be placed somewhere before 'if'
added = []
# you part of code
elif line.find("CONECT") > -1:
con = line.split()
line_value = line_value + 1
try:
line_j = "e, %s, %s\n" % (str(line_value),con[2])
tmp = sorted((str(line_value),con[2]))
if tmp not in added:
added.append(tmp)
output_file.write(line_j)
print(line_j)
line_i = "e, %s, %s\n" % (str(line_value),con[3])
tmp = sorted((str(line_value),con[3]))
if tmp not in added:
added.append(tmp)
output_file.write(line_i)
print(line_i)
line_k = "e, %s, %s\n" % (str(line_value),con[4])
tmp = sorted((str(line_value),con[4]))
if tmp not in added:
added.append(tmp)
print(line_k)
output_file.write(line_k)
except IndexError:
continue
答案 1 :(得分:0)
以下是文件两行的比较方法:
def compare(line1, line2):
els1 = line1.strip().split(', ')
els2 = line2.strip().split(', ')
return Counter(els1) == Counter(els2)
请参阅the documentation for the Counter
class。
如果元素数量无关紧要,您可以将Counter
类替换为set
而不是
答案 2 :(得分:0)
以下方法应该有效。首先在代码中进一步添加以下行:
seen = set()
然后使用以下代码替换try
内的所有内容:
for con_value in con[2:5]:
entry = frozenset((line_value, con_value))
if entry not in seen:
seen.append(entry)
line_j = "e" + ', ' + str(line_value) + ', ' + con_value + "\n"
output_file.write(line_j)
print(line_j)
确保此代码缩进到与其替换的代码相同的级别。