Python 基于某些条件对文本文件数据进行分组
我有一个很长的数据集(一个很长的文本文件),如下所示:Python 基于某些条件对文本文件数据进行分组,python,python-3.x,Python,Python 3.x,我有一个很长的数据集(一个很长的文本文件),如下所示: https://a.com/ Login: f Pass: fi Login: da Pass: ge Login: ts Pass: mom https://b.com/ Login: xt Pass: nnm https://c.com Login: 763 Pass: er64 Login: zs Pass: Te4 在每个url下,会显示不同的用户信息,如用户名和密码。我需要以下输出: https://a.com/ Login:
https://a.com/
Login: f
Pass: fi
Login: da
Pass: ge
Login: ts
Pass: mom
https://b.com/
Login: xt
Pass: nnm
https://c.com
Login: 763
Pass: er64
Login: zs
Pass: Te4
在每个url下,会显示不同的用户信息,如用户名和密码。我需要以下输出:
https://a.com/ Login: f Pass: fi
https://a.com/ Login: da Pass: ge
https://a.com/ Login: ts Pass: mom
https://b.com/ Login: xt Pass: nnm
https://c.com Login: 763 Pass: er64
https://c.com Login: zs Pass: Te4
尝试了不同的方法,但不起作用。有什么想法吗?Context
- Python3.x
- 需要修改的纯文本文件
- 开发人员FunnyBoss希望使用嵌套数据重新格式化纯文本文件
- 将纯文本文件转换为YAML,然后将YAML转换为python脚本,根据需要修改源YAML
- 如果您有一个包含非格式化数据的纯文本文件,将其转换为众所周知的数据格式(如YAML)可能会让您感到麻烦,但如果:
- 您从供应商处获得数据,您可以说服他们从现在开始向您发送格式化数据
- 您使用“一次过”的“屏幕抓取”方法(如中),有人更改了数据,或者它有一些您不希望出现的数据
- 您发现需要向数据文件添加注释
- 您发现您的“屏幕抓取”方法是不够的,您需要在将来的某个日期维护代码,并记住它的作用
- 将文本文件加载到标准文本编辑器/IDE中
- 创建一个编辑器宏,通过将“before”更改为“after”,将与
匹配的每一行转换为YAML/^https://
- 以前
- 修改其余的项,使它们都是格式良好的YAML,并在每个ChildItems键下进行适当的嵌套
- PrimaryUrl: "https://a.com/" ChildItems: - Login: "f" Pass: "fi" - Login: "da" Pass: "ge" - Login: "ts" Pass: "mom"
- 将文件修改为python脚本,并使用
yaml.safe_load('''{data_here}''')
上下文
- Python3.x
- 需要修改的纯文本文件
- 开发人员FunnyBoss希望使用嵌套数据重新格式化纯文本文件
- 将纯文本文件转换为YAML,然后将YAML转换为python脚本,根据需要修改源YAML
- 如果您有一个包含非格式化数据的纯文本文件,将其转换为众所周知的数据格式(如YAML)可能会让您感到麻烦,但如果:
- 您从供应商处获得数据,您可以说服他们从现在开始向您发送格式化数据
- 您使用“一次过”的“屏幕抓取”方法(如中),有人更改了数据,或者它有一些您不希望出现的数据
- 您发现需要向数据文件添加注释
- 您发现您的“屏幕抓取”方法是不够的,您需要在将来的某个日期维护代码,并记住它的作用
- 将文本文件加载到标准文本编辑器/IDE中
- 创建一个编辑器宏,通过将“before”更改为“after”,将与
匹配的每一行转换为YAML/^https://
- 以前
- 修改其余的项,使它们都是格式良好的YAML,并在每个ChildItems键下进行适当的嵌套
- PrimaryUrl: "https://a.com/" ChildItems: - Login: "f" Pass: "fi" - Login: "da" Pass: "ge" - Login: "ts" Pass: "mom"
- 将文件修改为python脚本,并使用
yaml.safe_load('''{data_here}''')
获取数据集并导入数据:
然后,根据需要迭代并打印:data = open("myfile.txt", "r")
prefix = "" for line in data: if line.startswith("Login:"): print(prefix, end="\t") elif not line.startswith("Pass:"): prefix = line.rstrip() continue print(line.rstrip(), end="\n" if line.startswith("Pass:") else "\t")
获取数据集并导入数据:
然后,根据需要迭代并打印:data = open("myfile.txt", "r")
prefix = "" for line in data: if line.startswith("Login:"): print(prefix, end="\t") elif not line.startswith("Pass:"): prefix = line.rstrip() continue print(line.rstrip(), end="\n" if line.startswith("Pass:") else "\t")
数据集是什么数据结构?数组?它是一个纯文本文件。输出将是所有行的组合。。。只需一个字符串,即可使用startwith在
中存储url来标识每一行,并使用该url附加登录名和密码,直到新的url出现。数据集是什么数据结构?数组?它是一个纯文本文件。输出将是所有行的组合。。。只需一个字符串,就可以使用startwith store url在tmpVarialble
中标识每一行,并使用该url附加登录名和密码,直到新的url出现。tmpVarialble
prefix = "" for line in data: if line.startswith("Login:"): print(prefix, end="\t") elif not line.startswith("Pass:"): prefix = line.rstrip() continue print(line.rstrip(), end="\n" if line.startswith("Pass:") else "\t")
https://a.com/ Login: f Pass: fi https://a.com/ Login: da Pass: ge https://a.com/ Login: ts Pass: mom https://b.com/ Login: xt Pass: nnm https://c.com Login: 763 Pass: er64 https://c.com Login: zs Pass: Te4