Python3中的打印格式

Python3中的打印格式,python,printing,python-3.x,Python,Printing,Python 3.x,我正在尝试用Python 3打印,但遇到了问题。我的代码中有一个for循环,如下所示: seq = input("enter DNA sequence to search: ") pat = re.compile('(.{10})(ATC.{3,6}CAG)') li = [] output_lines = [] for mat in pat.finditer(seq): x = mat.end() li.append(mat.groups()+(seq[x:x+10],))

我正在尝试用Python 3打印,但遇到了问题。我的代码中有一个for循环,如下所示:

seq = input("enter DNA sequence to search: ")
pat = re.compile('(.{10})(ATC.{3,6}CAG)')
li = []
output_lines = [] 
for mat in pat.finditer(seq):
    x = mat.end()
    li.append(mat.groups()+(seq[x:x+10],))
for u in li:
    z = u[1] 
    A = z.count('A')
    C = z.count('C') 
    G = z.count('G') 
    T = z.count('T')
    sumbases = [A,C,G,T]
    print(sumbases)
[1, 2, 3, 4],[2, 0, 1, 4]
当我打印
sumbases
时,我得到如下示例:

[1, 2, 3, 4]
[2, 0, 1, 4]
我正在尝试如下格式化输出:

seq = input("enter DNA sequence to search: ")
pat = re.compile('(.{10})(ATC.{3,6}CAG)')
li = []
output_lines = [] 
for mat in pat.finditer(seq):
    x = mat.end()
    li.append(mat.groups()+(seq[x:x+10],))
for u in li:
    z = u[1] 
    A = z.count('A')
    C = z.count('C') 
    G = z.count('G') 
    T = z.count('T')
    sumbases = [A,C,G,T]
    print(sumbases)
[1, 2, 3, 4],[2, 0, 1, 4]
谁能告诉我这个问题吗?提前感谢。

您可以尝试以下方法:

output_lines = []
for u in li:  
    z = u[1]  
    A = z.count('A')  
    C = z.count('C')   
    G = z.count('G')   
    T = z.count('T')
    sumbases = "A,C,G,T" # I suppose you format it here differently
    y = sumbases.replace("\n"," ")  # not sure why you need this

    # print(y) # don't print now, print later...
    output_lines.append(y)

print(','.join(output_lines))
编辑对于已编辑的问题:

seq = input("enter DNA sequence to search: ")
pat = re.compile('(.{10})(ATC.{3,6}CAG)')
output_lines = [] 
for mat in pat.finditer(seq):
    x = mat.end()
    z = (mat.groups()+(seq[x:x+10],)[1]
    output_lines.append(str([z.count(a) for a in 'ACGT')]))
print(','.join(output_lines))

这不是这段代码的输出。它将精确打印
A、C、G、T
,并在每次迭代中换行。我更希望你发布真实的代码,或者至少与示例一致。谢谢,对不起,我没有包含完整的代码。我可以看到这个问题是如何不明确的。@德尔南I编辑了我的文章以包含整个代码。你应该考虑使用内置的优化<代码>集合。计数器< /代码>设施。似乎“代码> LI.AppEnter(Mat。GysPs(+)(SEQ[X:X+10),)/<代码>)的意图是还捕获以下十个字符,为什么不直接添加第三个捕获组来显式匹配它们:
(.{10})(ATC.{3,6}CAG)(.{10})
。然后我想你可以简单地写
li=re.findall(pat,seq)
…不管我的
print(y,end=',')
建议-它添加了一个难看的尾随逗号。这更好,尽管如果整个循环可以折叠成生成器表达式会更好。谢谢您的帮助。我认为Python3不支持这种语法的print语句?当我尝试这一点时,我得到了一个错误?@sebrowns-对不起,请在它周围加上括号(参见我编辑的答案)。另外,如果你在stackoverflow.com上写“我有一个错误”,那么试着把它包括在你的评论中。@sebrowns没错。此示例适用于Python2。但是仍然不清楚您的实际代码是什么。太好了。我想我现在开始明白了。我从倒数第二行的输出_行得到一个语法错误。