【问题标题】:How to Split up a string that was read from a file如何拆分从文件中读取的字符串
【发布时间】:2015-01-12 21:19:23
【问题描述】:

我在用 python 拆分这个列表时遇到了问题。我想要它做的是拆分列表,但保持密码链接到用户名。

Users = []
NewUser = input("Enter the new Users Username: ")
UserPass = input("Enter the new Users Password: ")
Users.append([NewUser, UserPass])
Pfile = open('Passwords','r')
print(Pfile.read())
CurrentUsers = Pfile.read()
Pfile.close
Pfile = open('Passwords','w')
OldUsers = []
OldUsers = CurrentUsers.split()
print(OldUsers)
Users.append(OldUsers)
print(Users)

我得到的问题是字符串被完全破坏而不是在我得到的最后三个打印中分裂:

[['Dan', 'Span'], ['Tim', 'Can']]  - previous data already stored
['']  - the split values
[['Tin', 'im'], ['']] - the new values added to my previous list

我认为这可能是拼写错误或拆分列表的方式不正确

谢谢

【问题讨论】:

  • 您使用文件而不是数据库是否有原因?我建议为此使用具有适当密码哈希方案(不要自己滚动)的数据库(例如 MySQL)。
  • 拆分列表?你是说字符串吗?因为 split() 是一个 str 方法
  • 你也没有关闭文件Pfile.close <- no parens,你应该使用with打开你的文件,你不必自己关闭它们

标签: python list split


【解决方案1】:

您从文件中读取()两次。首先将读取的值存储到一个变量中,然后打印该变量。

一旦您从打开的输入流中读取()所有数据,该流将“耗尽”并且再次从中读取不会产生任何额外数据(即,该文件不只是“再次读取”。)这就是为什么您在结果中看到了空字符串。

【讨论】:

  • 您可能想解释一下,调用read 会将指针移动到文件末尾,因此再次调用read 从文件末尾读取。这可以通过按照您的建议进行操作并将该值存储在变量中并使用它来解决,或者在再次读取之前在打开的文件上调用seek(0)
  • 我同意这是另一种可能性。更简单的方法是再次打开()文件上的另一个 IO 流。但鉴于这些显然是效率较低的解决方案,而且我认为 OP 只是在学习 Python 甚至编程,所以最好把它留在那里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-27
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多