一条弦蟒

2024-04-24 00:19:50 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,我有一个字符串 ST. PETER'S HOSPITAL OF DEMIGARGON, LLC.和更多这样的字符串,其中空格, comma ,和fullstop .位置是随机的。你知道吗

期望的输出是-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)

Tags: of字符串inforifitempeterrow
2条回答
"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)

您可以尝试手动执行:

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.

相关问题 更多 >