I have a string
inputstring = "ini adalah salah satu theme park yang terkenal yaitu __u__n__i__v__e__r__s__a__l __s__t__u__d__i__o , di dalam banyak sekali permainan menarik seperti untuk remaja maupun anak-anak , tempatnya agak panas karena open space , makanan di sini agak mahal jdnya di sarankan untuk makan dulu dan membawa minuman botol untuk bisa di refil ."
I want to replace the character before the underscore to an uppercase such that the output will be
ini adalah salah satu theme park yang terkenal yaitu UNIVERSAL STUDIO , di dalam banyak sekali permainan menarik seperti untuk remaja maupun anak-anak , tempatnya agak panas karena open space , makanan di sini agak mahal jdnya di sarankan untuk makan dulu dan membawa minuman botol untuk bisa di refil .
I would like to use list comprehension if possible.
print(''.join('_' + char.lower() if char.isupper() else char for char in inputstring).lstrip('_'))
UPDATE
Using Tim's answer works well on a single string but when I tried to put into a function and apply to all rows of a particular column in a dataframe, it does not seem to work. May I know what am I doing wrong here?
def uppercase(text):
text = re.sub(r'__(\w)', lambda m: m.group(1).upper(), text)
return text
df['review'] = df['review'].apply(lambda x: uppercase(x))
Here is a snapshot of the output I got after transferring the results to excel:
