簡體   English   中英

Python中如何在字符前后插入空格並換行?

[英]How to insert a space before and after a character and put on a new line in Python?

我需要在 x1 之前和 x1 之后插入一個字符並換行

我的代碼:

f='p11p21p31'
y='x1'
k=str(y).join(f[i:i+3] for i in range(0, len(f), 3))
#p=' '.join(k[i:i+3] for i in range(0, len(k), 3))
print(k)

我的出局

p11x1p21x1p31

我需要:

p11 x1
p21 x1
p31 x1

你快到了。 使用您的代碼:

f='p11p21p31'
y='x1'
k=str(" "+y+"\n").join(f[i:i+3] for i in range(0, len(f), 3))+" "+y
print (k)

Output:

p11 x1
p21 x1
p31 x1

您需要在定界符之后加入換行符,並在該定界符之前加入空格。 您最后在字符串的末尾添加了空格+分隔符,因為 list 上的join()不會在最后一個元素之后設置分隔符。

或者:

k= "".join([f[i] if (i+1) % 3 != 0 else f[i]+" "+y+"\n" for i in range(0,len(f))])

在 function 中:

f='p11p21p31'
y='x1'

def split_fxy(f,x,y):
    return "".join([f[i] if (i+1) % x != 0 else f[i]+" "+y+"\n" for i in range(0,len(f))])

print (split_fxy(f,3,y))

您在加入時面臨的問題是它只會在您要加入的元素之間添加'x1'請參閱文檔)。 要修復它,您需要在末尾添加一個額外的" x1"

如果您使用的是 Python 3.6+(強烈推薦),請使用以下內容:

f='p11p21p31'
y='x1'
k= f' {y}\n'.join(f[i:i+3] for i in range(0, len(f), 3)) + f' {y}'
print(k)

如果您使用的是 3.6 之前的版本,請使用:

f='p11p21p31'
y='x1'
k= ' {}\n'.format(y).join(f[i:i+3] for i in range(0, len(f), 3)) + ' ' + y
print(k)

即使在您使用 Python2 的情況下,前面的代碼也可以工作,此時強烈建議不要這樣做。

Output:

p11 x1
p21 x1
p31 x1

嘗試join \n

f = 'p11p21p31'
y = 'x1'
size = 3  # split each 3 chars

k = '\n'.join(f[i:i+size] + ' ' + y for i in range(0, len(f), 3))
print(k)

您可以使用f字符串使您的意圖更清晰:

f='p11p21p31'
y='x1'
print(''.join([f'{f[i:i+3]} {y}\n' for i in range(0,len(f),3) ]))

印刷:

p11 x1
p21 x1
p31 x1

使用基於正則表達式的解決方案

1/根據你的模式拆分

2/ 過濾器 null 項目

3/ 將 x1 連接到所有項目

4/ 加入\n

import re

f='p11p21p31'
#      4                3                         2          1
print("\n".join(map(lambda i: i+" x1", list(filter(None, re.split(r'([a-z]*[0-9]+)', f))))))

暫無
暫無

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

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