如何从Python字符串的左侧删除字符?例如:
string='@!#word '
我知道我可以使用strip('@!# ')
来获取
string='word'
但是我需要一个通用代码来删除所有不是字母的字符
答案 0 :(得分:1)
使用Regex。
import re
string='@!#word '
print(re.sub('[^A-Za-z]+', '', string))
<强>输出:强>
word
如果您需要移除侧面的特殊字符,请使用此选项。
<强>实施例强>
import string
s='@!#word '
print(s.rstrip(string.punctuation).lstrip(string.punctuation))
<强>输出:强>
word
答案 1 :(得分:0)
“删除所有非字母字符的代码”如果您正在寻找此功能,可以尝试使用join:
string='@!#word '
new_str = ''.join(i for i in string if i.isalpha())
print(new_str)
O / p将如下:
'word'
答案 2 :(得分:0)
您可以使用过滤器功能在字符串函数的帮助下完成此操作。
string='@!#word '
string = filter(str.isalnum, string)
print string
答案 3 :(得分:0)
您可以使用与字符串开头匹配的正则表达式以及其后的所有非字母字符执行此操作:
import re
re.sub(r'^[A-Za-z]*', '', string)
答案 4 :(得分:0)
仅在开始和停止时清除,非正则表达式,内部的特殊字符将被保留:
library(shiny)
library(shinyBS)
UI <- shinyUI(fluidPage(
fluidRow(
column(10,
plotOutput("line_graph")),
#Pop up windows, for three buttons on the left side
bsModal("modalExample1", "Your plot", "a_plot", size = "large",
plotOutput("plot1"), downloadButton('downloadPlot', 'Download')),
bsModal("modalExample2", "Your plot", "b_plot", size = "large",
plotOutput("plot2"), downloadButton('downloadPlot2', 'Download')),
column(2,
actionButton("a_plot","Bubble chart"),
actionButton("b_plot","Graph view"))
)
))
Server <- function(input, output) {
output$line_graph <- renderPlot({hist(10)})
output$plot1 <- renderPlot({hist(20)})
output$plot2 <- renderPlot({hist(30)})
}
shinyApp(ui = UI, server = Server)
输出:
from string import ascii_letters as letters
text ='@!#word @! word '
def cleanMe(text):
t = list(text)
while t and t[0] not in letters:
t[:] = t[1:] # shorten list as long as non-letters are in front
while t and t[-1] not in letters:
t[:] = t[:-1] # shorten list as long as non-letters are in back
return ''.join(t)
w = cleanMe(text)
print (w)
答案 5 :(得分:0)
这将删除字符串两端的所有非字母和非整数,同时保留字符串中出现的特殊字符:
import re, string
name = "@!#word"
al_nums = re.sub('[\W_]+', '', string.printable)
extra_chars = ''.join([i for i in name if i not in al_nums])
print(name.strip(extra_chars))
# word
答案 6 :(得分:0)
这是我的尝试:
a=list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
name = "@!#word"
i=0
b=[]
for i in range(0,len(name)):
if(name[i] in a):
b.append(name[i])
b=''.join(b)
print(b)
最后,加入列表会给出只有字母的字符。
我刚刚开始学习Python。如果这种方法不是pythonic,请告诉我。
答案 7 :(得分:0)
如果您只想从两侧剥离字符(即不要删除中间的符号):
string = '@!#word '
s, e = 0, len(string)
while s < e and not string[s].isalpha():
s += 1
while s < e and not string[e - 1].isalpha():
e -= 1
print(string[s:e])