[英]How to add space before and after specific character using regex in 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.