Если у меня есть ряд строк Python, с которыми я работаю, это всегда будет иметь вид

initialword_content

И я хочу вырезать часть initialword, которая всегда будет иметь одинаковое количество символов, а затем я хочу превратить все экземпляры _ в пробелы - поскольку content может иметь некоторые подчеркивают в этом - какой самый простой способ сделать это?

1
fox 22 Янв 2013 в 11:19

3 ответа

Лучший ответ
strs = "initialword_content"
strs = strs[12:].replace("_", " ")
print strs

Из-за начального слова всегда имеет одинаковое количество символов, поэтому вы можете просто получить суффикс строки. И используйте string.replace, чтобы заменить все "_" на пробелы.

3
Jun HU 22 Янв 2013 в 07:35

Сначала разделите строку один раз (с параметром от 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:])

Или, если длина «начального слова» всегда одинакова (и вам не нужно каждый раз вычислять его), воспользуйтесь решением @ JunHu.

2
eumiro 22 Янв 2013 в 07:34

Я использовал нарезку и функцию 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'
0
TerryA 21 Июл 2013 в 11:54