Python 中多行字串的水平連線


在 Python 中,字串連線是一個常見的操作,它允許你將兩個或多個字串組合成一個字串。雖然垂直連線字串(即一個接一個)非常簡單,但水平連線字串(即並排)需要一些額外的處理,尤其是在處理多行字串時。在本文中,我們將探討在 Python 中執行多行字串水平連線的不同方法。

方法 1:使用 + 運算子

+ 運算子可用於將兩個或多個字串組合成一個字串。但是,在處理多行字串時,使用 + 運算子可能無法產生所需的水平連線。

語法

result = operand1 + operand2

這裡,“+” 運算子用於 Python 中的加法。它可以用於將數字加在一起或連線(合併)字串。當與數字運算元一起使用時,它執行加法並返回總和。當與字串運算元一起使用時,它連線字串並返回組合結果。

示例

在下面的示例中,+ 運算子垂直連線字串,導致字串一個接一個地追加。要實現水平連線,我們需要考慮字串的行級連線。

string1 = "Hello"
string2 = "World"

concatenated_string = string1 + string2

print(concatenated_string)

輸出

HelloWorld

方法 2:使用 zip() 函式和 join()

我們可以透過使用 zip() 函式以及 join() 方法來水平連線多行字串。zip() 函式接受兩個或多個可迭代物件,並返回一個迭代器,該迭代器生成包含每個可迭代物件中元素的元組。我們可以利用此功能迭代多行字串的對應行。

語法

result = separator.join(iterable)

這裡,join() 函式在字串分隔符上呼叫,並接受可迭代物件(例如列表或元組)作為輸入。它連線可迭代物件的元素,在每個元素之間使用分隔符字串,並返回生成的字串。

語法

result = zip(iterable1, iterable2, ...)

這裡,zip() 函式用於將多個可迭代物件(例如列表或元組)組合成單個可迭代的元組。每個元組包含輸入可迭代物件中的對應元素,並且生成的迭代器可以例如在迴圈中使用,以同時處理來自多個序列的組合元素。

示例

在下面的示例中,我們首先使用 split('\n') 方法將多行字串 string1 和 string2 分割成單獨的行。split('\n') 方法在每個換行符 (\n) 處分割字串並返回一個行列表。然後我們使用 zip() 函式迭代 string1 和 string2 的對應行。zip() 函式將來自每個字串的行配對,並建立包含對應行的元組。然後,我們利用列表推導式使用 join() 方法將每一對行用空格字元連線起來。這將生成一個水平連線行的列表。最後,我們使用 '\n'.join() 方法將行重新連線在一起,該方法在每一行之間新增一個換行符 (\n),從而建立水平連線的多行字串。

string1 = '''Hello
This is a multiline string
With multiple lines'''

string2 = '''World
In Python
Concatenation'''

lines1 = string1.split('\n')
lines2 = string2.split('\n')

horizontal_concatenation = '\n'.join(' '.join(line) for line in zip(lines1, lines2))

print(horizontal_concatenation)

輸出

Hello World
This is a multiline string In Python
With multiple lines Concatenation

方法 3:使用 textwrap 模組

textwrap 模組提供了用於格式化和操作多行字串的各種函式。要使用 textwrap 模組水平連線多行字串,我們可以使用 wrap() 函式,然後連線包裝後的行。

語法

textwrap.wrap(text, width, **kwargs)

這裡,textwrap.wrap() 方法接受文字字串和寬度作為輸入引數,並返回一個字串列表,其中每個字串表示包裝到指定寬度的文字行。可以提供其他可選關鍵字引數來控制包裝過程的其他方面。

示例

在上面的示例中,我們首先匯入 textwrap 模組,該模組提供了包裝和格式化多行字串的必要函式。接下來,我們使用 textwrap.wrap() 函式將 string1 和 string2 的行包裝成一個包裝行列表。textwrap.wrap() 函式確保每行不超過指定的寬度。然後,我們使用 max(len(wrapped_lines1), len(wrapped_lines2))確定兩個包裝列表之間的最大行數。最後,我們連線來自 wrapped_lines1 和 wrapped_lines2 的對應包裝行,使用 ljust() 方法對齊每一行以確保它們具有相同的長度。我們在每一對行之間新增一個空格字元,並使用 '\n'.join() 方法用換行符連線它們。

import textwrap

string1 = '''Hello
This is a multiline string
With multiple lines'''

string2 = '''World
In Python
Concatenation'''

wrapped_lines1 = textwrap.wrap(string1)
wrapped_lines2 = textwrap.wrap(string2)

max_lines = max(len(wrapped_lines1), len(wrapped_lines2))

horizontal_concatenation = '\n'.join(
    wrapped_lines1[i].ljust(len(max(wrapped_lines1, key=len)))
    + ' '
    + wrapped_lines2[i].ljust(len(max(wrapped_lines2, key=len)))
    for i in range(max_lines)
)

print(horizontal_concatenation)

輸出

Hello This is a multiline string With multiple lines World In Python Concatenation                   

結論

在本文中,我們討論瞭如何在 Python 中使用不同的方法水平連線多行字串。我們探討了兩種不同的執行水平連線的方法:使用 zip() 函式和 join() 方法,以及利用 textwrap 模組。這些技術提供了有效的方式來水平連線多行字串,使你能夠以有效的方式操作和格式化你的字串資料。

更新於: 2023-07-17

866 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.