首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >按顺序组合用正则表达式创建的三个列表- Python

按顺序组合用正则表达式创建的三个列表- Python
EN

Stack Overflow用户
提问于 2011-08-19 21:01:39
回答 1查看 199关注 0票数 0

我有一个文本文件,我正在阅读三个正则表达式。我希望将每个regex搜索中的每个项目逐行合并,并使用与下面最后一行相同的格式打印出来。我就是不能让循环把所有的东西都组合起来。

来自三个不同来源的示例文本(您可以看到信息有时丢失,而其他时候则以不同的格式呈现:

  1. 债券名称O/F C/F Cpn地铁FICO CAL WALB 1 1mCPR 60+ CE CWL 2004-6 2A5 0.95 0.09 L+39 4 49 200 4 28.62 47.69%
  2. Bond /F C/F FICO 60+ Notes提供CSMC 06-9 7A1 25.00 12.01 L+45 727 26 577 33.29 FLT,0.0% 50-00
  3. 型CUSIP债券名称报价结构PRIME 17312KAB8 CMSI 07-5 1A2 7/7 92.50 LCF

代码语言:javascript
代码运行次数:0
运行
复制
import re

string = open("cusip.txt")
read_string = string.read()

cusip_reg_exp = re.compile('\s[0-9]{3}[a-zA-Z0-9]{6}\s')
cusip_result = cusip_reg_exp.findall(read_string)

bond_name_reg_exp = re.compile('\s[A-Z]{3,5}\s[0-9]{4}\D{1,3}\S{1,3}\s{1,2}\w{1,3}')
bond_name_result = bond_name_reg_exp.findall(read_string)

bond_price_name_reg_ex = re.compile('[$]{0,1}[0-9]{1,2}[-]{1}[0-9]{2}')
bond_price_result = bond_price_name_reg_ex.findall(read_string)

print(cusip_result[0],bond_name_result[0],bond_price_result[0])
EN

回答 1

Stack Overflow用户

发布于 2011-08-19 21:10:15

如果所有这些列表都具有相同的长度,则可以将每个对应条目(由空格分隔)连接起来,以创建组合字符串的列表,然后将这些字符串(由换行符分隔)连接起来,以创建显示的结果列表。我决定用一些列表理解的魔法来做这件事(循环不行!)

代码语言:javascript
代码运行次数:0
运行
复制
print '\n'.join([' '.join([cusip_item, bond_name_item, bond_price_item]) for (cusip_item, bond_name_item, bond_price_item) in zip(cusip_result, bond_name_result, bond_price_result)])

希望这能满足你的需要。如果没有,我相信这个问题还会有其他几种解释:)

编辑:我知道它有点长,但是你可以缩短变量名。或者(或者,另外),您可以在理解之前定义zip(cusip_result、bond_name_result、bond_price_result)。不过,我还是忍不住要做这些事,我喜欢热腾腾的蟒蛇一条线!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7127381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档