python利用capitalize()处理字符串,cpython源码溯源

2023-10-10 23:10

本文主要是介绍python利用capitalize()处理字符串,cpython源码溯源,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

python有很多处理str格式的方法,可以方便利用

capitalize():将首字母大写,其他字母变小写

def stringCase():info0='youngCase'str.capitalize(info0)print("首字母大写"+info0.capitalize())

官方python测试代码为

def test_capitalize(self):self.checkequal(' hello ', ' hello ', 'capitalize')self.checkequal('Hello ', 'Hello ','capitalize')self.checkequal('Hello ', 'hello ','capitalize')self.checkequal('Aaaa', 'aaaa', 'capitalize')self.checkequal('Aaaa', 'AaAa', 'capitalize')

深挖源码:尝试用vscode直接进入capitalize()函数,目录为:

结果为:

    @overloaddef capitalize(self: LiteralString) -> LiteralString: ...@overloaddef capitalize(self) -> str: ...  # type: ignore[misc]

并没有看到具体的实现方法:

Python的内置函数(用于cpython)是用C编写的,因此vscode提供了只显示函数签名的伪方法。因此需要查找包含源代码的GitHub页面:

 So,先在cpython中找到buitins.pyi对应的源文件,其他教程提示是在:

https://github.com/python/cpython/blob/main/Python/bltinmodule.c(其实不是)

我是在https://github.com/python/cpython/blob/main/Objects/bytearrayobject.c

找到了方法声明:

 点击stringlib_capitalize跳转到(到头文件了):

cpython/ctype.h at main · python/cpython · GitHub

tatic PyObject*
stringlib_capitalize(PyObject *self, PyObject *Py_UNUSED(ignored))
{PyObject* newobj;newobj = STRINGLIB_NEW(NULL, STRINGLIB_LEN(self));if (!newobj)return NULL;_Py_bytes_capitalize(STRINGLIB_STR(newobj), STRINGLIB_STR(self),STRINGLIB_LEN(self));return newobj;
}

再点击_Py_bytes_capitalize跳转到:

cpython/bytes_methods.c at main · python/cpython · GitHub

得到如下代码

其实如注释所示:就是将首字母大写,后续字符置为小写.再后再返回


我也查找了java 的capitalize()实现,在import com.sun.xml.internal.ws.util.StringUtils后可以看到java的实现方式比较简单,只是将首字母进行大写,后续字符没有变小写。

 public static String capitalize(String name) {if (name != null && name.length() != 0) {char[] chars = name.toCharArray();chars[0] = Character.toUpperCase(chars[0]);return new String(chars);} else {return name;}}
}

【注:文章内容可能不正确,欢迎指正】

这篇关于python利用capitalize()处理字符串,cpython源码溯源的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/183771

相关文章

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

VSCode配置Anaconda Python环境的实现

《VSCode配置AnacondaPython环境的实现》VisualStudioCode中可以使用Anaconda环境进行Python开发,本文主要介绍了VSCode配置AnacondaPytho... 目录前言一、安装 Visual Studio Code 和 Anaconda二、创建或激活 conda

pytorch+torchvision+python版本对应及环境安装

《pytorch+torchvision+python版本对应及环境安装》本文主要介绍了pytorch+torchvision+python版本对应及环境安装,安装过程中需要注意Numpy版本的降级,... 目录一、版本对应二、安装命令(pip)1. 版本2. 安装全过程3. 命令相关解释参考文章一、版本对

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音

Golang中拼接字符串的6种方式性能对比

《Golang中拼接字符串的6种方式性能对比》golang的string类型是不可修改的,对于拼接字符串来说,本质上还是创建一个新的对象将数据放进去,主要有6种拼接方式,下面小编就来为大家详细讲讲吧... 目录拼接方式介绍性能对比测试代码测试结果源码分析golang的string类型是不可修改的,对于拼接字

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

Python如何在Word中生成多种不同类型的图表

《Python如何在Word中生成多种不同类型的图表》Word文档中插入图表不仅能直观呈现数据,还能提升文档的可读性和专业性,本文将介绍如何使用Python在Word文档中创建和自定义各种图表,需要的... 目录在Word中创建柱形图在Word中创建条形图在Word中创建折线图在Word中创建饼图在Word

Python Excel实现自动添加编号

《PythonExcel实现自动添加编号》这篇文章主要为大家详细介绍了如何使用Python在Excel中实现自动添加编号效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、背景介绍2、库的安装3、核心代码4、完整代码1、背景介绍简单的说,就是在Excel中有一列h=会有重复

Python FastAPI入门安装使用

《PythonFastAPI入门安装使用》FastAPI是一个现代、快速的PythonWeb框架,用于构建API,它基于Python3.6+的类型提示特性,使得代码更加简洁且易于绶护,这篇文章主要介... 目录第一节:FastAPI入门一、FastAPI框架介绍什么是ASGI服务(WSGI)二、FastAP

Python中Windows和macOS文件路径格式不一致的解决方法

《Python中Windows和macOS文件路径格式不一致的解决方法》在Python中,Windows和macOS的文件路径字符串格式不一致主要体现在路径分隔符上,这种差异可能导致跨平台代码在处理文... 目录方法 1:使用 os.path 模块方法 2:使用 pathlib 模块(推荐)方法 3:统一使