如何在大文本文件中拆分组合列表?

2024-09-30 12:16:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题是我有一个非常大的电子邮件和密码数据库,我需要把它发送到一个mysql数据库。在

.txt文件格式如下:

emailnumberone@gmail.com:password1
emailnumbertwo@gmail.com:password2
emailnumberthree@gmail.com:password3
emailnumberfour@gmail.com:password4
emailnumberfive@gmail.com:password5

我的想法是创建一个循环,将该行作为一个变量,搜索“:”并在前面选择文本,将其发送到数据库,然后将该行的后面部分与之相同。我该怎么做?在


Tags: txtcom数据库密码电子邮件mysqlgmailpassword2
3条回答

带有一些错误处理的简短程序:

创建演示数据文件:

t = """
emailnumberone@gmail.com:password1
emailnumbertwo@gmail.com:password2
emailnumberthree@gmail.com:password3
emailnumberfour@gmail.com:password4
emailnumberfive@gmail.com:password5
k
: """

with open("f.txt","w") as f: f.write(t)

分析数据/存储:

^{pr2}$

输出:

stored:  emailnumberone@gmail.com password1

stored:  emailnumbertwo@gmail.com password2

stored:  emailnumberthree@gmail.com password3

stored:  emailnumberfour@gmail.com password4

stored:  emailnumberfive@gmail.com password5

Error:  k
 not enough values to unpack (expected 2, got 1)
Error:  :  Something is empty: ': '

编辑:根据What characters are allowed in an email address?-a ':'可能是电子邮件第一部分的一部分,如果引用的话。在

这在理论上允许输入

`"Cool:Emailadress@google.com:coolish_password"` 

这将导致此代码出现错误。请参阅Talip Tolga Sans answer以了解如何以不同方式分解拆分以避免此问题。在

这可以通过python中字符串的简单split()方法来实现。在

>>> a = 'emailnumberone@gmail.com:password1'
>>> b = a.split(':')
>>> b
['emailnumberone@gmail.com', 'password1']

要适应@PatrickArtner的复杂密码失败,可以执行以下操作:

^{pr2}$

在str.查找()返回给定字符串中给定字符的第一个出现位置。{{cd2>他们的电子邮件不能有@,然后定位{}将为您提供正确的分隔位置。在那之后,把绳子分开就是小菜一碟了。在

打开文件作为上下文管理器(使用Open(…)),可以使用for循环迭代行,然后使用regex match(re Module)(或只在“:”上拆分)并使用sqlite3将值插入数据库。在

所以文件:

with open("file.txt", "r") as f:
    for line in f:
        pass #manipulation

Sqlite3文档:https://docs.python.org/2/library/sqlite3.html

相关问题 更多 >

    热门问题