簡體   English   中英

Pythonic插入字符的方式

[英]Pythonic way to insert character

我有兩個轉換案例:

s = "foo bar" #-> "foo bar &"
s = "foo ! bar" # -> "foo & ! bar" -> notice not '&!'

我是這樣做的:

t = s.split("!", 1)
t[0] = t[0] + "  &"
" !".join(t)

什么是更加pythonic的方式來做同樣的事情?

不確定這是否更加pythonic,但上面的例子可以作為一個單行。

>>> s = "foo ! bar"
>>> s = s.replace(' ! ', ' & ! ') if '!' in s else s + ' &'
>>> s
'foo & ! bar'

str.partition是為運算符解析而構建的:

p = s.partition(' !')
print p[0]+' &'+p[1]+p[2]

當從左到右解析時,它適用於前綴和中綴運算符。 它總是返回一個3元組的事實允許使用它,即使找不到你的操作符並對你的結果應用一個動作,如上所示。

>>> import re
>>> re.sub(r'( !|$)', r' &\1', 'foo bar', 1)
'foo bar &'
>>> re.sub(r'( !|$)', r' &\1', 'foo ! bar', 1)
'foo & ! bar'

在一行中執行多個句子:

>>> s = ["foo bar", "foo ! bar"]
>>> [x + ' &' if not '!' in x else x.replace('!','& !', 1) for x in s]
['foo bar &', 'foo & ! bar']
s1 = "foo bar"
s2 = "foo ! bar"

import re

print re.sub(r'^([^!]+)( |$)', r'\1 &\2', s1) # foo bar &
print re.sub(r'^([^!]+)( |$)', r'\1 &\2', s2) # foo & ! bar

暫無
暫無

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

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