String Python3:如何在一个“";至于;环

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

我有一个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  
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']}