python - 用python解析文件
问题描述
我正在尝试在 python 中解析一个文件。我有一个这样的文件:
ID number Name
LOI_3456 Bacteria1
HUI_6478 Bacteria1
PETY_3564 Bacteria1
所以首先我收集了每个细菌的所有 ID_number:
import re
f = open("file.tsv","r")
f.readline()
for line in f.readlines():
line = li.rstrip("\n")
line = li.rsplit("\t")
ID_number = li[0]
现在在另一个文件中,我有这样的东西:
d2234 d45564 d223098 d50923 PETY_354_d3456 d76533
d2635 PETY_354 d88593 d324623 HUI_6478_d3553d35626
...
现在我在同一个脚本中得到了这个:
cnt = 0
f2 = open("file2","r")
for li in f2.readlines():
li = li.rstrip("\n")
pattern_id_number = re.search(ID_number+'_\d+', li)
if pattern_id number in li:
print("line :",n, li)
但这不起作用。我想要的是保留与我的 pattern_id_member 匹配的行。
编辑 :
当我做 :
if pattern_id :
print(li)
代替
if pattern_id in li:
print(li)
什么都没有打印...
解决方案
我认为问题出在您在这里构造的正则表达式中:
pattern_id_number = re.search(ID_number+'_\d+', li)
Toutpattern_id_number
等于类似的东西HUI_6478
,当您添加时,\d+
您会得到一个正则表达式,例如:
HUI_6478_\d+
此正则表达式与您的第二个文件中的任何内容都不匹配。我不知道所需的输出,但看起来您需要将正则表达式创建更新为:
pattern_id_number = re.search(ID_number + '_\w\d+', li)
然后你会得到一个输出:
line : d2635 PETY_354 d88593 d324623 HUI_6478_d3553d35626
编辑:是的,上面的评论也是有效的,你需要有
if pattern_id_number:
print("line :", li)
推荐阅读
- javascript - JavaScript 中“new Date”的奇怪行为
- android - Flutter - 将 json 数据解析成列表
- discord.js - 尝试使用 cron 发送预定消息但收到未定义错误的“发送”
- flutter - ThemeData 中的 google_fonts - 未应用字体
- c# - 库存不良视觉问题
- java - 如何将 Room 实体的 ArrayList 传递给另一个活动?(安卓室)
- macos - x86 组装;覆盖.bss 值?
- powershell - 通过 Jenkins 运行 powershell 脚本时出现此错误:“NativeCommandError”不确定如何使用调用命令
- r - 是否有一个 R 函数可以从 Github 存储库一次读取多个 CSV?
- html - 为什么我的链接没有居中?(在菜单栏中)