<p>引用<a href="https://docs.python.org/3/library/csv.html#csv.reader" rel="nofollow">official docs on csv module</a>(<strong>emphasis mine</strong>):</p>
<blockquote>
<p><code>csv.reader(csvfile, dialect='excel', **fmtparams)</code></p>
<p>Return a reader object which will iterate over lines in the given
<code>csvfile</code>. <strong><code>csvfile</code> can be any object which supports the iterator
protocol and returns a string each time its <code>__next__()</code> method is
called — file objects and list objects are both suitable.</strong></p>
</blockquote>
<p>Strings支持迭代器,但它从字符串中逐个生成<em>字符</em>,而不是多行字符串中的行。在</p>
<pre><code>>>> s = "abcdef"
>>> i = iter(s)
>>> next(i)
'a'
>>> next(i)
'b'
>>> next(i)
'c'
</code></pre>
<p>所以任务是创建迭代器,在每次迭代中生成<em>行</em>而不是<em>字符</em>。不幸的是,字符串文本不是多行字符串。在</p>
^{pr2}$
<p>相当于:</p>
<pre><code>base = 'eest1@mail.ru,username1test2@gmail.com,username2test3@gmail.com,username3test4@rambler.ru,username4test5@ya.ru,username5
</code></pre>
<p>本质上,您没有正确解析该字符串所需的信息。请尝试改用多行字符串文字:</p>
<pre><code>base='''eest1@mail.ru,username1
test2@gmail.com,username2
test3@gmail.com,username3
test4@rambler.ru,username4
test5@ya.ru,username5'''
</code></pre>
<p>在此更改之后,您可以按换行符拆分字符串,并且一切正常:</p>
<pre><code>parsed=csv.reader(base.splitlines(), delimiter=',')
for p in parsed:
print(p)
</code></pre>