无法从文本文件中打印特定行

Sht*_*ops 1 python mechanize python-3.x mechanize-python

所以我目前有这个代码来读取一个看起来像这样的accounts.txt文件:

username1:password1
username2:password2
username3:password3
Run Code Online (Sandbox Code Playgroud)

然后我有了这个(感谢这里的成员)阅读accounts.txt文件并将其拆分为用户名和密码,以便我以后可以打印它.当我尝试使用与此代码分开的用户名和密码打印第1行时:

with open('accounts.txt') as f:

    credentials = [x.strip().split(':') for x in f.readlines()]



for username,password in credentials:

    print username[0]
    print password[0]
Run Code Online (Sandbox Code Playgroud)

它打印出来:

j
t
a
2
a
3
Run Code Online (Sandbox Code Playgroud)

(这些是我在文本文件中的三行,正确分割,但它打印所有行,只打印每行的第一个字母.)

我尝试了几种不同的方法,没有运气.任何人都知道该怎么做?

谢谢你的帮助.非常感谢.这是我的第二天编程,我为这么简单的问题道歉.

sen*_*rle 7

username并且password是字符串.当您对字符串执行此操作时,您将获得字符串中的第一个字符:

username[0]
Run Code Online (Sandbox Code Playgroud)

不要那样做.只是print username.

进一步解释.credentials是一个字符串列表的列表.打印出来时看起来像这样:

[['username1', 'password1'], ['username2', 'password2'], ['username3', 'password3']]
Run Code Online (Sandbox Code Playgroud)

要获得一个用户名/密码对,您可以这样做:print credentials[0].结果是这样的:

['username1', 'password1']
Run Code Online (Sandbox Code Playgroud)

或者,如果你这样做print credentials[1],这个:

['username2', 'password2']
Run Code Online (Sandbox Code Playgroud)

你也可以做一个叫做"解包"的东西,这就是你的for循环所做的.您也可以在for循环外执行此操作:

username, password = credentials[0]
print username, password
Run Code Online (Sandbox Code Playgroud)

结果将是

username1 password1
Run Code Online (Sandbox Code Playgroud)

再次,如果你像一个字符串,'username1'并采取它的单个元素,如下所示:

username[0]
Run Code Online (Sandbox Code Playgroud)

你收到一封信,u.

  • @Shtoops:欢迎来到StackOverflow!"非常感谢你,男人"最好表达["通过单击答案左侧的复选框轮廓"](http://stackoverflow.com/faq#howtoask). (3认同)