<p>最简单的答案如下:</p>
<pre><code>import csv
# ==========1. Open the File, Read it into a list, and Print Contents
print("1==============Open File, Read into List, Print Contents")
# open the file, read it into a list (each line is a list within a list,
# and the end of line spaces are stripped as well as the individual
# elements split at the comma)
studentlist = []
with open("studentinfo.txt", "r", newline="") as f:
for row in csv.reader(f):
if len(row) > 0:
studentlist.append(row)
print(studentlist)
</code></pre>
<p>但您的原始代码应该可以工作-我已经运行了它,但在linux而不是windows上。如果我能请你做更多的工作:</p>
<pre><code>with open("studentinfo.txt", "r", newline="") as f:
ascii_ch = list(map(ord,f.read()))
eol_delims = list(map(str,(ch if ch < 32 else '' for ch in ascii_ch)))
print(",".join(eol_delims))
</code></pre>
<p>这将产生一个<code>,</code>列表,但中间有<code>13,10</code>或<code>10</code>,甚至可能有<code>10,13,10</code>之类的内容。这些是我们讨论过的<code>\r\n</code>和<code>\n</code>,但我想知道你是否设法得到了第三个选项?
如果是这样的话,我想你需要重写这个文本文件来获得正常的行尾。你知道吗</p>
<p>--(根据评论更新)<br/>
关于<code>10,13,10</code>,我唯一的建议就是只在一个应用程序(比如记事本)中编辑文本文件,而不要在另一个应用程序中编辑它。你知道吗</p>
<p>实际的问题来自于在两个应用程序中编辑文件,每个应用程序对行尾应该是什么有不同的解释(windows应用程序应该是<code>\r\n</code>)复制是<code>\n</code>。我以前遇到过,但从来没有制定出行动的顺序。你知道吗</p>