跳转至

3374. 首字母大写 II

题目描述

表:user_content

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| content_id  | int     |
| content_text| varchar |
+-------------+---------+
content_id 是这张表的唯一主键。
每一行包含一个不同的 ID 以及对应的文本内容。

编写一个解决方案来根据下面的规则来转换 content_text 列中的文本:

  • 将每个单词的 第一个字母 转换为 大写,其余字母 保持小写
  • 特殊处理包含特殊字符的单词:
    • 对于用短横 - 连接的词语,两个部份 都应该 大写例如,top-rated → Top-Rated)
  • 所有其他 格式空格 应保持 不变

返回结果表同时包含原始的 content_text 以及根据上述规则修改后的文本。

结果格式如下例所示。

 

示例:

输入:

user_content 表:

+------------+---------------------------------+
| content_id | content_text                    |
+------------+---------------------------------+
| 1          | hello world of SQL              |
| 2          | the QUICK-brown fox             |
| 3          | modern-day DATA science         |
| 4          | web-based FRONT-end development |
+------------+---------------------------------+

输出:

+------------+---------------------------------+---------------------------------+
| content_id | original_text                   | converted_text                  |
+------------+---------------------------------+---------------------------------+
| 1          | hello world of SQL              | Hello World Of Sql              |
| 2          | the QUICK-brown fox             | The Quick-Brown Fox             |
| 3          | modern-day DATA science         | Modern-Day Data Science         |
| 4          | web-based FRONT-end development | Web-Based Front-End Development |
+------------+---------------------------------+---------------------------------+

解释:

  • 对于 content_id = 1:
    • 每个单词的首字母都是大写的:"Hello World Of Sql"
  • 对于 content_id = 2:
    • 包含的连字符词 "QUICK-brown" 变为 "Quick-Brown"
    • 其它单词遵循普通的首字母大写规则
  • 对于 content_id = 3:
    • 连字符词 "modern-day" 变为 "Modern-Day"
    • "DATA" 转换为 "Data"
  • 对于 content_id = 4:
    • 包含两个连字符词:"web-based" → "Web-Based"
    • 以及 "FRONT-end" → "Front-End"

解法

方法一

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
import pandas as pd


def capitalize_content(user_content: pd.DataFrame) -> pd.DataFrame:
    def convert_text(text: str) -> str:
        return " ".join(
            (
                "-".join([part.capitalize() for part in word.split("-")])
                if "-" in word
                else word.capitalize()
            )
            for word in text.split(" ")
        )

    user_content["converted_text"] = user_content["content_text"].apply(convert_text)
    return user_content.rename(columns={"content_text": "original_text"})[
        ["content_id", "original_text", "converted_text"]
    ]

评论

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy