彻底搜索后,我可以找到如何删除特定字母前的所有字符,但不能删除任何字母之前的字符。
我正在尝试从此处转换字符串:
" This is a sentence. #contains symbol and whitespace
对此:
This is a sentence. #No symbols or whitespace
我尝试过以下代码,但第一个示例中的字符串仍然出现。
for ch in ['\"', '[', ']', '*', '_', '-']:
if ch in sen1:
sen1 = sen1.replace(ch,"")
这不仅因为某些未知原因而无法删除示例中的双引号,而且也不会删除前导空格,因为它会删除空白的所有。< / p>
提前谢谢。
答案 0 :(得分:1)
不要只删除空格,而是在第一个字母之前删除任何字符,请执行以下操作:
#s is your string
for i,x in enumerate(s):
if x.isalpha() #True if its a letter
pos = i #first letter position
break
new_str = s[pos:]
答案 1 :(得分:0)
您可以使用re.sub
import re
text = " This is a sentence. #contains symbol and whitespace"
re.sub("[^a-zA-Z]+", " ", text)
re.sub(匹配模式,替换字符串,搜索字符串)
答案 2 :(得分:0)
这是一个非常基本的版本;即它使用Python中的初学者很容易理解的语法。
your_string = "1324 $$ '!' '' # this is a sentence."
while len(your_string) > 0 and your_string[0] not in "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz":
your_string = your_string[1:]
print(your_string)
#prints "this is a sentence."
优点:简单,无需导入
缺点:如果您觉得使用列表推导感觉很舒服,可以避免使用while循环。 此外,您使用正则表达式进行比较的字符串可能更简单。
答案 3 :(得分:0)
删除所有空格和标点符号:
>>> text.lstrip(string.punctuation + string.whitespace)
'This is a sentence. #contains symbol and whitespace'
或者,另一种方法是找到第一个ascii字母的字符。例如:
>>> pos = next(i for i, x in enumerate(text) if x in string.ascii_letters)
>>> text[pos:]
'This is a sentence. #contains symbol and whitespace'
答案 4 :(得分:0)
将所有内容删除到第一个字母字符。
import itertools as it
s = " - .] * This is a sentence. #contains symbol and whitespace"
"".join(it.dropwhile(lambda x: not x.isalpha(), s))
# 'This is a sentence. #contains symbol and whitespace'
或者,迭代字符串并测试每个字符是否在黑名单中。如果是真正剥离字符,否则短路。
def lstrip(s, blacklist=" "):
for c in s:
if c in blacklist:
s = s.lstrip(c)
continue
return s
lstrip(s, blacklist='\"[]*_-. ')
# 'This is a sentence. #contains symbol and whitespace'
答案 5 :(得分:0)
import re
s = " sthis is a sentence"
r = re.compile(r'.*?([a-zA-Z].*)')
print r.findall(s)[0]