python – 根据字符串中的匹配日期将两个列表压缩在一起
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 根据字符串中的匹配日期将两个列表压缩在一起,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2334字,纯文字阅读大概需要4分钟。
内容图文
![python – 根据字符串中的匹配日期将两个列表压缩在一起](/upload/InfoBanner/zyjiaocheng/806/dae04f2b91904f738a8f3d89fe6a8013.jpg)
我有两个文件列表,我使用以下方法从FTP文件夹中提取:
sFiles = ftp.nlst(date+'sales.csv')
oFiles = ftp.nlst(date+'orders.csv')
这导致两个列表看起来像:
sFiles = ['20170822_sales.csv','20170824_sales.csv','20170825_sales.csv','20170826_sales.csv','20170827_sales.csv','20170828_sales.csv']
oFiles = ['20170822_orders.csv','20170823_orders.csv','20170824_orders.csv','20170825_orders.csv','20170826_orders.csv','20170827_orders.csv']
使用我的真实数据集,类似……
for sales, orders in zip(sorted(sFiles),sorted(oFiles)):
df = pd.concat(...)
得到我想要的结果,但有时会出现问题并且两个文件都没有进入正确的FTP文件夹,所以我想要一些代码来创建一个可迭代的对象,我可以提取匹配的订单和销售文件名称基于日期.
以下作品……我不确定我会给它什么“pythonic”得分.可读性差,但这是一种理解,所以我认为有性能提升?
[(sales, orders) for sales in sFiles for orders in oFiles if re.search(r'\d+',sales).group(0) == re.search(r'\d+',orders).group(0)]
解决方法:
你可以使用字典:
import collections
d = collections.defaultdict(dict)
sFiles = ftp.nlst(date+'sales.csv')
oFiles = ftp.nlst(date+'orders.csv')
for sale, order in zip(sFiles, oFiles):
a, b = sale.split("_")
a1, b2 = order.split("_")
d[a]["sales"] = sale
d[a1]["orders"] = order
print(dict(d))
现在,您的数据格式为:{“date”:{“sales”:“sales filename”,“orders”:“orders filename”}}
输出:
{'20170828': {'sales': '20170828_sales.csv'}, '20170822': {'sales': '20170822_sales.csv', 'orders': '20170822_orders.csv'}, '20170823': {'orders': '20170823_orders.csv'}, '20170824': {'sales': '20170824_sales.csv', 'orders': '20170824_orders.csv'}, '20170825': {'sales': '20170825_sales.csv', 'orders': '20170825_orders.csv'}, '20170826': {'sales': '20170826_sales.csv', 'orders': '20170826_orders.csv'}, '20170827': {'sales': '20170827_sales.csv', 'orders': '20170827_orders.csv'}}
编辑:
通过字典理解并建立你提出的列表理解解决方案,你可以试试这个:
import re
final_data = [{"sold":sold, "order":order} for sold in sFiles for order in oFiles if re.findall("\d+", sold)[0] == re.findall("\d+", order)[0]]
输出:
[{'sold': '20170822_sales.csv', 'order': '20170822_orders.csv'}, {'sold': '20170824_sales.csv', 'order': '20170824_orders.csv'}, {'sold': '20170825_sales.csv', 'order': '20170825_orders.csv'}, {'sold': '20170826_sales.csv', 'order': '20170826_orders.csv'}, {'sold': '20170827_sales.csv', 'order': '20170827_orders.csv'}]
内容总结
以上是互联网集市为您收集整理的python – 根据字符串中的匹配日期将两个列表压缩在一起全部内容,希望文章能够帮你解决python – 根据字符串中的匹配日期将两个列表压缩在一起所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。