新聞中心
python 傳字符串到c的 dll
用ctypes,
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信平臺小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了石臺免費建站歡迎大家使用!
from ctypes import *
libc=cdll.msvcrt
libc.printf("hello %s\n","world")
hello world
12
p = create_string_buffer("Hello", 30)
n=libc.sprintf(p,"hello %s\n","world")
n
12
print p
ctypes.c_char_Array_30 object at 0x02247C10
dir(p)
['__class__', '__ctypes_from_outparam__', '__delattr__', '__delitem__', '__delsl
ice__', '__dict__', '__doc__', '__format__', '__getattribute__', '__getitem__',
'__getslice__', '__hash__', '__init__', '__len__', '__module__', '__new__', '__r
educe__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__setslice
__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__',
'_b_base_', '_b_needsfree_', '_length_', '_objects', '_type_', 'raw', 'value']
p.value
'hello world\n'
Python3之字符串格式化format函數(shù)詳解(上)
概述
在Python3中,字符串格式化操作通過format()方法或者f'string'實現(xiàn)。而相比于老版的字符串格式化方式,format()方法擁有更多的功能,操作起來更加方便,可讀性也更強。該函數(shù)將字符串當成一個模板,通過傳入的參數(shù)進行格式化,并且使用大括號{}作為特殊字符代替%。
位置設(shè)定
默認位置
不指定格式化位置,按照默認順序格式化
示例結(jié)果:
設(shè)置位置
設(shè)置數(shù)字順序指定格式化的位置
示例結(jié)果:
設(shè)置關(guān)鍵字
設(shè)置關(guān)鍵字指定格式化的內(nèi)容
示例結(jié)果:
參數(shù)傳遞
我們可以傳入各種類型參數(shù)格式化字符串,即不限于字符串變量或數(shù)字等。
元組傳參
利用元組傳參,傳參形式 *tuple
示例結(jié)果:
字典傳參
示例結(jié)果:
列表傳參
示例結(jié)果:
python之字符串內(nèi)置函數(shù)
1. 字符串字母處理
2. 字符串填充
str.ljust(width, fillchar)、str.center(width, fillchar)、str.rjust(width, fillchar)
返回一個指定的寬度 width 「居左」/「居中」/「居右」的字符串,如果 width 小于字符串寬度直接返回字符串,否則使用 fillchar 去填充。
3,字符串計數(shù)
str.count(sub, start, end)
#統(tǒng)計字符串里某個字符出現(xiàn)的次數(shù)??蛇x參數(shù)為在字符串搜索的開始與結(jié)束位置。
start, end遵循**“左閉右開”**原則。
4. 字符串位置
str.endswith(suffix, start, end)和str.startswith(substr, beg, end)
#判斷字符串是否以指定后綴結(jié)尾/開頭,如果以指定后綴「結(jié)尾」/「開頭」返回 True,否則返回 False。
5. 字符串查找
6. 字符串判斷
7. 字符串拼接
str.join() #將序列中的元素以指定的字符連接生成一個新的字符串。
s1 = "-" s2 = "" seq = ("r", "u", "n", "o", "o", "b")
# 字符串序列 print (s1.join( seq )) print (s2.join( seq )) r-u-n-o-o-b runoob
8. 統(tǒng)計字符串長度
str.len() #返回對象(字符、列表、元組等)長度或項目個數(shù)。
9. 去除字符兩側(cè)空格
str.lstrip()、str.rstrip()、str.strip() #截掉字符串「左邊」/「右邊」/「左右」兩側(cè)的空格或指定字符。
str0 = ' Hello World!' str0.lstrip() 'Hello World!' str1 = 'aaaa Hello World!' str1.lstrip('a') ' Hello World!'
10. str.maketrans(intab, outtab)和str.translate(table)
str.maketrans()創(chuàng)建字符映射的轉(zhuǎn)換表
str.maketrans()根據(jù)參數(shù)table給出的表轉(zhuǎn)換字符串的字符。
str.maketrans()傳入的也可以是字典
tab = {'e': '3', 'o': '4'} trantab = str.maketrans(tab) str0.translate(trantab) 'H3ll4 W4rld!'
11. 字符串替換
str.replace(old, new, max)
12. 字符分割
str.split(str, num)
13. 字符填充
str.zfill(width)
返回指定長度的字符串,原字符串右對齊,前面填充0。
在Python中使用字符串調(diào)用函數(shù)
已有字符串形式的函數(shù)名稱,那么如何調(diào)用這個函數(shù)呢?
通過調(diào)用內(nèi)置函數(shù)locals()和globals()返回的字典對象,就可以可以獲得名稱與對象的映射關(guān)系。其中,locals()僅在全局范圍內(nèi)調(diào)用時可以獲得函數(shù)對象。 我們來看以下的例子。
需要注意的是,使用上述方法通過字符串調(diào)用函數(shù)時,為了系統(tǒng)的安全,防止執(zhí)行任意函數(shù),需要對函數(shù)名做一些處理,也就是使用統(tǒng)一的前綴為這些函數(shù)命名。例如在上述例子中,使用前綴cmd_+函數(shù)名的形式定義函數(shù)(cmd_help,cmd_sum)。
在傳入函數(shù)名字符串時,只傳入函數(shù)名的后半部分(如"help","sum"),由程序添加前綴后組成完整的函數(shù)名,再調(diào)用該函數(shù)。
對于類的成員函數(shù),則可以使用getattr()獲得類成員函數(shù)。
上述代碼通過字符串調(diào)用了類成員函數(shù),與前一段代碼執(zhí)行的結(jié)果相同。
此外,還可以使用字典將字符串與函數(shù)對應(yīng)起來調(diào)用,缺點就是每增加一個函數(shù)需要相應(yīng)在字典對象中添加相應(yīng)的鍵值,增加代碼維護工作量。
以上代碼在Python 3.6以上運行通過。
分享名稱:python函數(shù)傳字符串,python 字符串常用函數(shù)
本文來源:http://www.dlmjj.cn/article/hodjpe.html