如何从字符串的两边删除符号?

时间:2018-04-18 06:53:55

标签: python python-2.7

如何从Python字符串的左侧删除字符?例如:

string='@!#word '

我知道我可以使用strip('@!# ')来获取

string='word'

但是我需要一个通用代码来删除所有不是字母的字符

8 个答案:

答案 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)
  • 使用小写&amp;创建列表大写字母。 字符串的各个元素使用对照列表进行测试 的即可。如果为True,则将元素附加到空列表。
  • 最后,加入列表会给出只有字母的字符。

    我刚刚开始学习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])