例如,我有一个字符串
ST. PETER'S HOSPITAL OF DEMIGARGON, LLC.
还有更多这样的字符串,其中空格,逗号
,
和句号.
的位置是随机的。
期望的输出是-St. Peter's Hospital Of Demigargon, LLC.
什么是最好的方法?
这是我到目前为止尝试过的
for row in ws.iter_rows(min_row=2):
split = row[0].value.split()
finalname = ""
for i, item in enumerate(split):
if item != 'LLC':
finalname+=item.title()
else:
finalname+= item
if i != len(split) - 1:
finalname+=" "
print(finalname)
答案 0 :(得分:0)
"ST. PETER'S HOSPITAL OF DEMIGARGON, LLC.".title().replace('Llc','LLC').replace("'S", "'s")
这只是将Llc
和'S
视为特殊情况。
使用regex可以更高级。 re.sub()
可以采用任意函数来计算匹配对象的替换值。
import re
IGNORED = {"LLC."} # Add other special cases as needed.
string = "ST. PETER'S HOSPITAL OF DEMIGARGON, LLC."
def repl(m):
if m.group() in IGNORED:
return m.group()
return m.group(1) + m.group(2).lower() # Unlike .title(), works on "PETER'S".
re.sub("(\w)(\S*)", repl, string) # groups: (1st letter)(not spaces)
答案 1 :(得分:0)
您可以尝试手动进行操作:
IGNORED_STRINGS = [
'LLC.'
]
def to_camel_case(string_val):
if string_val in IGNORED_STRINGS:
return string_val
else:
return string_val[0] + (string_val[1:]).lower()
sample_string = "ST. PETER'S HOSPITAL OF DEMIGARGON, LLC."
camel_cased_string = " ".join([
to_camel_case(string_val)
for string_val in sample_string.split(' ')
])
print(camel_cased_string)
我添加了IGNORED_STRINGS
,因此您可以添加任何特殊情况,即LLC.