String Python3:如何在一个“";至于;环
我有一个tablar.text文件(名为“xfile”)。其内容示例附于下文String Python3:如何在一个“";至于;环,string,python-3.x,increment,String,Python 3.x,Increment,我有一个tablar.text文件(名为“xfile”)。其内容示例附于下文 Scaffold2_1 WP_017805071.1 26.71 161 97 Scaffold2_1 WP_006995572.1 26.36 129 83 Scaffold2_1 WP_005723576.1 26.92 130 81 Scaffold3_1 WP_009894856.1 25.77 245 43 Scaffol
Scaffold2_1 WP_017805071.1 26.71 161 97
Scaffold2_1 WP_006995572.1 26.36 129 83
Scaffold2_1 WP_005723576.1 26.92 130 81
Scaffold3_1 WP_009894856.1 25.77 245 43
Scaffold8_1 WP_017805071.1 38.31 248 145
Scaffold8_1 WP_006995572.1 38.55 249 140
Scaffold8_1 WP_005723576.1 34.88 258 139
Scaffold9_1 WP_005645255.1 42.54 446 144
请注意每一行是如何以y为数字的Scaffold(y)_1
开头的。我已经编写了以下代码来打印以以下术语开头的每一行,Scaffold2
和Scaffold8
with open("xfile", 'r') as data:
for line in data.readlines():
if "Scaffold2" in line:
a = line
print(a)
elif "Scaffold8" in line:
b = line
print(b)
我想知道,有没有一种方法可以建议增加if和elif语句中Scaffold()的(y)部分
这样做的想法是允许脚本搜索包含“Scaffold(y)”的每一行,并在其自身的变量中存储具有特定数字(y)的每一行,然后进行打印。这显然比手动输入每个数字要快得多。您可以尝试一下,这比使用正则表达式容易得多。如果这不是您所期望的,请告诉我,我将更改代码
for line in data.readlines():
if line[0:8] == "Scaffold" and line[8].isdigit():
print(line)
我只是检查一下你那一行的第9个位置,即(第8个索引)。如果是一个数字,我就打印这行。就像你说的,如果你的“y”是一个数字,我就打印。我不是在增加它。您的for循环已经完成了增量工作。好的,您似乎希望获得如下格式的内容:
entries={y1:['Scaffold(y1)…','Scaffold(y1)…'],y2:['Scaffold(y2)…','Scaffold(y2)…'],…}
然后您可以这样做(我假设所有行的开头都与您显示的相同,因此y
值始终是字符串中的第8位):
通过这种方式,您将拥有一个我在上面向您展示的格式的词典-输出:
{'2': ['Scaffold2_1 WP_017805071.1 26.71 161 97', 'Scaffold2_1 WP_006995572.1 26.36 129 83', 'Scaffold2_1 WP_005723576.1 26.92 130 81'], '3': ['Scaffold3_1 WP_009894856.1 25.77 245 43'], '8': ['Scaffold8_1 WP_017805071.1 38.31 248 145', 'Scaffold8_1 WP_006995572.1 38.55 249 140', 'Scaffold8_1 WP_005723576.1 34.88 258 139'], '9': ['Scaffold9_1 WP_005645255.1 42.54 446 144']}
编辑:tbh我仍然不完全理解你为什么需要那个tho。因此,如果y是一个数字,你需要打印它,而不是增加y,对吗?@Cormac,你能粘贴你真正想要的o/p吗。你建议的格式非常适合我的需要。基本上,我需要这种字典的原因是因为我需要绘制表格最后两列中的数字,但所有以“Scaffold3_1”开头的行中的数据点都需要与“Scaffold8_1”分开绘制。此外,我尝试使用您附带的代码,但我得到了一个“ValueError:关闭文件上的I/O操作”很不幸。正在尝试解决:)等等,这对我来说是一个愚蠢的缩进错误。非常感谢:)祝你好运,很高兴我能帮忙。
{'2': ['Scaffold2_1 WP_017805071.1 26.71 161 97', 'Scaffold2_1 WP_006995572.1 26.36 129 83', 'Scaffold2_1 WP_005723576.1 26.92 130 81'], '3': ['Scaffold3_1 WP_009894856.1 25.77 245 43'], '8': ['Scaffold8_1 WP_017805071.1 38.31 248 145', 'Scaffold8_1 WP_006995572.1 38.55 249 140', 'Scaffold8_1 WP_005723576.1 34.88 258 139'], '9': ['Scaffold9_1 WP_005645255.1 42.54 446 144']}