1

如果我有一系列我正在使用的 python 字符串,它将始终采用以下形式

initialword_content

我想去掉initialword部分,这将始终是相同数量的字符,然后我想将所有实例_转换为空格 - 因为content其中可能有一些下划线 - 最简单的方法是什么?

4

3 回答 3

3
strs = "initialword_content"
strs = strs[12:].replace("_", " ")
print strs

由于initialword总是有相同数量的字符,所以你可以得到字符串的后缀。并使用 string.replace 将所有“_”替换为空格。

于 2013-01-22T07:30:35.283 回答
2

首先,将字符串拆分一次(使用参数 1 到split)以获得两部分:丢弃的“初始字”和其余部分,您将所有下划线替换为空格。

s = 'initialword_content' 
a, b = s.split('_', 1)
b = b.replace('_', ' ')
# b == 'content'

s = 'initialword_content_with_more_words' 
a, b = s.split('_', 1)
b = b.replace('_', ' ')
# b == 'content with more words'

这可以通过一个命令来完成:

s.split('_', 1)[1].replace('_', ' ')

另一种方式:

' '.join(s.split('_')[1:])

或者,如果“initialword”的长度始终相同(并且您不必每次都计算它),请采用@JunHu 的解决方案。

于 2013-01-22T07:28:53.757 回答
0

我使用了切片和 replace() 函数。replace() 只是......替换!

string = 'initialword_content'
content = string[12:] # You mentioned that intialword will always be the same length, so I used slicing.
content = content.replace('_', ' ')

例如:

>>> string = 'elephantone_con_ten_t' # elephantone was the first thing I thought of xD
>>> content = string[12:]
>>> content
... con_ten_t
>>> content = content.replace('_', ' ')
>>> content
... con ten t

但是,如果您还想在其他地方引用“elephantone”,请执行以下操作:

>>> string = 'elephantone_con_ten_t'
>>> l = string.split('_', 1) # This will only strip the string ONCE from the left.
>>> l[0]
... 'elephantone'
>>> l[1].replace('_', ' ')
... 'con ten t'
于 2013-01-22T07:32:21.507 回答