擅长:python、mysql、java
<p>文件中的最后一行缺少换行符(从技术上讲,这是对<a href="https://en.wikipedia.org/wiki/Text_file#Unix_text_files" rel="nofollow noreferrer">POSIX standards for text files</a>的违反,但您必须对此加以说明),因此前面的<code>"@account4\n"</code>被解释为相对于末尾的<code>"@account4"</code>是唯一的。我建议无条件地剥离换行符,并在编写时重新添加它们:</p>
<pre><code>with open('accounts.txt', 'r') as f:
unique_lines = {line.rstrip("\r\n") for line in f} # Remove newlines for consistent deduplication
with open('accounts_No_Dup.txt', 'w') as f:
f.writelines(f'{line}\n' for line in unique_lines) # Add newlines back
</code></pre>
<p>顺便说一句,在现代Python上(对于任何解释器,CPython/pypy3.6+,3.7+),您可以通过使用<code>dict</code>而不是<code>set</code>来保持第一次出现的顺序。只需将文件的读取更改为:</p>
<pre><code> unique_lines = {line.rstrip("\r\n"): None for line in f}
</code></pre>
<p>您将在第一次看到每一行时看到它,以该顺序显示,随后的重复项将被忽略</p>