簡體   English   中英

Python-將字符串分成兩列

[英]Python - split string into two columns

假設我有以下字符串:

"""line1
line2
line3
line4
line5
line6
line7
line8"""

我想編寫一個函數,將其分成由單個字符串表示的兩個相等大小的列,如下所示:

"""line1 line5
line2 line6
line3 line7
line4 line8"""

我可以將字符串分成兩個這樣:s1,s2 = s [:len(s)// 2],s [len(s)// 2:]

但是我不確定如何將它們結合起來...

s='''line1
line2
line3
line4
line5
line6
line7
line8'''

lines=s.split()
halflen = len(lines)/2
columns = '\n'.join(' '.join((lines[x],lines[x+halflen])) for x in range(halflen))

如果先分成幾行,會更容易。

lines = s.splitlines()
s1, s2 = lines[:len(lines) // 2], lines[len(lines)//2:]
"\n".join(map(" ".join, zip(s1, s2)))

這適用於偶數行。 當行數為奇數時,請使用itertools.izip_longest代替zip

def join(s1, s2):
    return s1 if s2 is None else " ".join((s1, s2))

而不是" ".join (如果您喜歡隱秘的oneliners,可以內聯)。

拿走你所擁有的,然后:

>>> s ="""line1
line2
line3
line4
line5
line6
line7
line8"""
>>> s1, s2 = s[:len(s)//2], s[len(s)//2:]
>>> '\n'.join([' '.join(x) for x in zip(s1.split('\n'),s2[1:].split('\n'))])
'line1 line5\nline2 line6\nline3 line7\nline4 line8'

令人討厭的單行代碼,但這是基本前提,只需使用zip將序列項配對,然后您就可以join它們重新組合在一起。

這會使它們井然有序:

string= string.split('\n')
string2= ""
for line in string:
    string2= string2 + line + " "

假設您有偶數行,並且s1s2的大小相同,則可以按以下方式組合它們:

lines = [s1[index] + ' ' + s2[index] for index, val in enumerate(s1)]
'\n'.join(lines)

您也可以同時連接這兩個步驟,但是為了清楚起見,我將它們分開。

如果您的字符串長度不同,則需要添加一些條件,這樣會有些混亂。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM