如何在 python 中将第二行连接到第一行的末尾?
How to join second line to end of first line in python?
我尝试阅读如下行:
A:129 Tyr -P- 9 - - - 10xR,4xG,3xD,3xK,2xP,2xV,2xY,1xE,1xI,1xL,1xM,1xN,1
xQ,1xT
A:181 Ser -P- 8 - - - 9xR,9xS,8xG,4xT,3xD,3xL,3xQ,3xV,2xK,2xM,1xA,1xF,1x
H,1xY
A:50 His --- 9 - - - 17xL,9xA,4xK,3xI,3xR,3xV,2xN,2xS,1xC,1xE,1xH,1xQ,1
xT
每条偶数行都是奇数行的延续,但被“\n\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s”分割所以我想将那些“\n\s(n)”替换为“ ' 并加入到 ODD 行的末尾。
例如:
A:181 Ser -P- 8 - - - 9xR,9xS,8xG,4xT,3xD,3xL,3xQ,3xV,2xK,2xM,1xA,1xF,1x
H,1xY
到
A:181 Ser -P- 8 - - - 9xR,9xS,8xG,4xT,3xD,3xL,3xQ,3xV,2xK,2xM,1xA,1xF,1xH,1xY
代码:
import os
import sys
import re
lines=["A:129 Tyr -P- 9 - - - 10xR,4xG,3xD,3xK,2xP,2xV,2xY,1xE,1xI,1xL,1xM,1xN,1"," xQ,1xT","A:181 Ser -P- 8 - - - 9xR,9xS,8xG,4xT,3xD,3xL,3xQ,3xV,2xK,2xM,1xA,1xF,1x"," H,1xY","A:50 His --- 9 - - - 17xL,9xA,4xK,3xI,3xR,3xV,2xN,2xS,1xC,1xE,1xH,1xQ,1"," xT"]
for i in lines:
print i.replace(" ","")
在这里,我只是用空 space 替换了 spaces 但我不知道如何将这些替换的偶数行连接到奇数行的末尾。
有人可以帮我做同样的事情吗?
提前致谢。
大家好,首先非常感谢您的回复。我尝试了所有方法,但下面的方法是正确的:
WILD= open("INPUT.txt", 'r')
merged = []
for line in WILD:
if line.startswith(" "):
merged[-1] += line.strip()
else:
merged.append(line.replace("\n",""))
输出:
A:129 Tyr -P- 9 - - - 10xR,4xG,3xD,3xK,2xP,2xV,2xY,1xE,1xI,1xL,1xM,1xN,1xQ,1xT
A:181 Ser -P- 8 - - - 9xR,9xS,8xG,4xT,3xD,3xL,3xQ,3xV,2xK,2xM,1xA,1xF,1xH,1xY
A:50 His --- 9 - - - 17xL,9xA,4xK,3xI,3xR,3xV,2xN,2xS,1xC,1xE,1xH,1xQ,1xT
而不是 replace
语句,您可以只使用 str.strip
去除字符串开头或结尾的空格。此外,您可以使用 zip
来迭代行对。
for x, y in zip(l[::2],l[1::2]):
print "".join([x, y.strip()])
如果这是一个迭代器,如文件,则使用 next
获取下一行。
for x in iterator:
y = next(iterator)
print "".join([x, y.strip()])
两种方式,所有偶数行 (0, 2, ...) 转到 x
,所有奇数行 (1, 3, ...) 转到 y
。
当然,这是假设 all list/file 中的条目恰好跨越两行。
如果它们可以跨越任意数量的行(仅一两行,或者五行),那么这将变得更加复杂。在这种情况下,您可以尝试这样的操作:
merged = []
for line in lines:
if line.startswith(" "):
merged[-1] += line.strip()
else:
merged.append(line)
注意:如果这些确实是文件中的行,您可能必须将 strip
应用于 所有 这些行,即 x.strip()
和 merged.append(line.strip())
,因为每一行都将由 \n
终止,您可能希望摆脱它。
将整个文件作为单个字符串读取,然后将整个白色space替换为单个制表符:
filepointer = open("INPUT.txt")
text = filepointer.read()
text = re.sub(r"\n\s{20,}", "\t", text)
这会匹配并删除一个换行符后跟 20 个 或更多 space 的序列,将它们替换为制表符。 (这样我就不必计算 space 的精确数量,如果某些行略有不同,程序仍然有效)。
如果您不想在连接的行之间使用制表符,只需使用 space (" "
) 而不是 "\t"
.
如果您必须将结果作为行列表,请在之后拆分 text
:
merged = text.splitlines()
我尝试阅读如下行:
A:129 Tyr -P- 9 - - - 10xR,4xG,3xD,3xK,2xP,2xV,2xY,1xE,1xI,1xL,1xM,1xN,1
xQ,1xT
A:181 Ser -P- 8 - - - 9xR,9xS,8xG,4xT,3xD,3xL,3xQ,3xV,2xK,2xM,1xA,1xF,1x
H,1xY
A:50 His --- 9 - - - 17xL,9xA,4xK,3xI,3xR,3xV,2xN,2xS,1xC,1xE,1xH,1xQ,1
xT
每条偶数行都是奇数行的延续,但被“\n\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s”分割所以我想将那些“\n\s(n)”替换为“ ' 并加入到 ODD 行的末尾。
例如:
A:181 Ser -P- 8 - - - 9xR,9xS,8xG,4xT,3xD,3xL,3xQ,3xV,2xK,2xM,1xA,1xF,1x
H,1xY
到
A:181 Ser -P- 8 - - - 9xR,9xS,8xG,4xT,3xD,3xL,3xQ,3xV,2xK,2xM,1xA,1xF,1xH,1xY
代码:
import os
import sys
import re
lines=["A:129 Tyr -P- 9 - - - 10xR,4xG,3xD,3xK,2xP,2xV,2xY,1xE,1xI,1xL,1xM,1xN,1"," xQ,1xT","A:181 Ser -P- 8 - - - 9xR,9xS,8xG,4xT,3xD,3xL,3xQ,3xV,2xK,2xM,1xA,1xF,1x"," H,1xY","A:50 His --- 9 - - - 17xL,9xA,4xK,3xI,3xR,3xV,2xN,2xS,1xC,1xE,1xH,1xQ,1"," xT"]
for i in lines:
print i.replace(" ","")
在这里,我只是用空 space 替换了 spaces 但我不知道如何将这些替换的偶数行连接到奇数行的末尾。
有人可以帮我做同样的事情吗?
提前致谢。
大家好,首先非常感谢您的回复。我尝试了所有方法,但下面的方法是正确的:
WILD= open("INPUT.txt", 'r')
merged = []
for line in WILD:
if line.startswith(" "):
merged[-1] += line.strip()
else:
merged.append(line.replace("\n",""))
输出:
A:129 Tyr -P- 9 - - - 10xR,4xG,3xD,3xK,2xP,2xV,2xY,1xE,1xI,1xL,1xM,1xN,1xQ,1xT
A:181 Ser -P- 8 - - - 9xR,9xS,8xG,4xT,3xD,3xL,3xQ,3xV,2xK,2xM,1xA,1xF,1xH,1xY
A:50 His --- 9 - - - 17xL,9xA,4xK,3xI,3xR,3xV,2xN,2xS,1xC,1xE,1xH,1xQ,1xT
而不是 replace
语句,您可以只使用 str.strip
去除字符串开头或结尾的空格。此外,您可以使用 zip
来迭代行对。
for x, y in zip(l[::2],l[1::2]):
print "".join([x, y.strip()])
如果这是一个迭代器,如文件,则使用 next
获取下一行。
for x in iterator:
y = next(iterator)
print "".join([x, y.strip()])
两种方式,所有偶数行 (0, 2, ...) 转到 x
,所有奇数行 (1, 3, ...) 转到 y
。
当然,这是假设 all list/file 中的条目恰好跨越两行。
如果它们可以跨越任意数量的行(仅一两行,或者五行),那么这将变得更加复杂。在这种情况下,您可以尝试这样的操作:
merged = []
for line in lines:
if line.startswith(" "):
merged[-1] += line.strip()
else:
merged.append(line)
注意:如果这些确实是文件中的行,您可能必须将 strip
应用于 所有 这些行,即 x.strip()
和 merged.append(line.strip())
,因为每一行都将由 \n
终止,您可能希望摆脱它。
将整个文件作为单个字符串读取,然后将整个白色space替换为单个制表符:
filepointer = open("INPUT.txt")
text = filepointer.read()
text = re.sub(r"\n\s{20,}", "\t", text)
这会匹配并删除一个换行符后跟 20 个 或更多 space 的序列,将它们替换为制表符。 (这样我就不必计算 space 的精确数量,如果某些行略有不同,程序仍然有效)。
如果您不想在连接的行之间使用制表符,只需使用 space (" "
) 而不是 "\t"
.
如果您必须将结果作为行列表,请在之后拆分 text
:
merged = text.splitlines()