strutils
-文本操作?
如此多的實際編程都涉及字符串操作,而這正是Python所能適應的。盡管如此,標準庫中仍然缺少數十個基本和常見的功能,其中幾個功能是由 strutils
。
- class boltons.strutils.MultiReplace(sub_map, **kwargs)[源代碼]?
多重替換是一次執行多個查找/替換操作的工具。
在給定要替換的值的映射的情況下,它允許在單個過程中替換所有匹配值,這可以在非常大的字符串上節省大量性能。除了簡單的替換,它還允許基于正則表達式進行替換。
關鍵字參數:
詞典用法::
from lrmslib import stringutils s = stringutils.MultiReplace({ 'foo': 'zoo', 'cat': 'hat', 'bat': 'kraken' }) new = s.sub('The foo bar cat ate a bat') new == 'The zoo bar hat ate a kraken'
可重復使用::
from lrmslib import stringutils s = stringutils.MultiReplace([ ('foo', 'zoo'), ('cat', 'hat'), ('bat', 'kraken)' ]) new = s.sub('The foo bar cat ate a bat') new == 'The zoo bar hat ate a kraken'
可以向構造函數傳遞字典或其他映射以及可迭代的元組。如果給定了一個可迭代變量,則將按照可迭代變量中指定的替換值的順序運行替換。如果給它一個OrderedDict,這也是正確的。如果給定詞典,則順序將是不確定的::
>>> 'foo bar baz'.replace('foo', 'baz').replace('baz', 'bar') 'bar bar bar' >>> m = MultiReplace({'foo': 'baz', 'baz': 'bar'}) >>> m.sub('foo bar baz') 'baz bar bar'
這是因為,如果您要插入的內容可能會被以后的替換所替換,則替換的順序可能很重要。請注意,如果您需要依賴順序,那么可以考慮使用元組列表而不是字典。
- boltons.strutils.a10n(string)[源代碼]?
那個“國際化”變成“I18N”的東西叫什么來著?縮寫?哦,等等,不:
a10n
。(它實際上是一種 numeronym 。)>>> a10n('abbreviation') 'a10n' >>> a10n('internationalization') 'i18n' >>> a10n('') ''
- boltons.strutils.args2cmd(args, sep=' ')[源代碼]?
返回Shell轉義的字符串版本 args ,由 sep ,使用與Microsoft C運行時相同的規則。
>>> print(args2cmd(['aa', '[bb]', "cc'cc", 'dd"dd'])) aa [bb] cc'cc dd\"dd
正如您所看到的,轉義是通過反斜杠而不是引號進行的,并且雙引號是唯一的特殊字符。有關更多詳細信息,請參閱代碼中的注釋?;趤碜?
subprocess
模塊。
- boltons.strutils.args2sh(args, sep=' ')[源代碼]?
返回Shell轉義的字符串版本 args ,由 sep ,基于Linux/BSD/MacOS生態系統中的sh、bash和其他Shell的規則。
>>> print(args2sh(['aa', '[bb]', "cc'cc", 'dd"dd'])) aa '[bb]' 'cc'"'"'cc' 'dd"dd'
如您所見,不帶特殊字符的參數不會轉義,帶特殊字符的參數用單引號引起來,單引號本身用雙引號引起來。雙引號的處理方式與任何其他特殊字符一樣。
基于來自
pipes
/shlex
模塊。另請注意,shlex
和argparse
具有拆分和分析以這種方式轉義的字符串的函數。
- boltons.strutils.asciify(text, ignore=False)[源代碼]?
轉換Unicode或字節字符串, text 轉換為只包含ASCII字符的字節串。為你們這些親歐洲的人做基本的脫音。
另外,溫和地提醒一下,這是一個 utility ,主要用于粘合。只要有可能,就讓您的應用程序工作 with Unicode,不是反對它。
>>> asciify('Beyoncé') == b'Beyonce' True
- boltons.strutils.bytes2human(nbytes, ndigits=0)[源代碼]?
將一個整數值變為 nbytes 轉換成人類可讀的格式。集 ndigits 控制小數點后應顯示的位數(默認
0
)。>>> bytes2human(128991) '126K' >>> bytes2human(100001221) '95M' >>> bytes2human(0, 2) '0.00B'
- boltons.strutils.camel2under(camel_string)[源代碼]?
將駝峰大小寫字符串轉換為下劃線。對于將類名轉換為函數名很有用。
>>> camel2under('BasicParseTest') 'basic_parse_test'
- boltons.strutils.cardinalize(unit_noun, count)[源代碼]?
單數詞有條件復數形式 unit_noun 如果 count 不是一個,盡可能地保留大小寫。
>>> vowels = 'aeiou' >>> print(len(vowels), cardinalize('vowel', len(vowels))) 5 vowels >>> print(3, cardinalize('Wish', 3)) 3 Wishes
- boltons.strutils.escape_shell_args(args, sep=' ', style=None)[源代碼]?
中每個字符串的轉義版本 args ,根據 style 。
- 參數:
看見
args2cmd()
和args2sh()
查看每種樣式的詳細信息和示例輸出。
- boltons.strutils.find_hashtags(string)[源代碼]?
查找并返回字符串中的所有哈希標簽,但刪除了哈希標記。支持亞洲語言的全角哈希標記,并且在URL錨點上不會出現誤報。
>>> find_hashtags('#atag http://asite/#ananchor') ['atag']
find_hashtags
也可以與Unicode標簽一起使用。
- boltons.strutils.format_int_list(int_list, delim=',', range_delim='-', delim_space=False)[源代碼]?
返回正整數列表中已排序的范圍字符串( int_list )。整數的連續范圍折疊為最小值和最大值。反轉
parse_int_list()
。- 參數:
>>> format_int_list([1,3,5,6,7,8,10,11,15]) '1,3,5-8,10-11,15'
- boltons.strutils.gunzip_bytes(bytestring)[源代碼]?
這個
gzip
如果你有一個文件或類似文件的對象,模塊是很棒的,但如果你只有字節又會怎樣呢?StringIO是一種可能性,但只使用這一行代碼通常更快、更容易、更簡單。使用這個久經考驗的實用函數從字節中解壓縮gzip。>>> gunzip_bytes(_EMPTY_GZIP_BYTES) == b'' True >>> gunzip_bytes(_NON_EMPTY_GZIP_BYTES).rstrip() == b'bytesahoy!' True
- boltons.strutils.gzip_bytes(bytestring, level=6)[源代碼]?
將一些字節轉換為一些壓縮字節。
>>> len(gzip_bytes(b'a' * 10000)) 46
請注意,現在所有級別的gzip都相當快,盡管它在任何級別的壓縮方面都不是真正的競爭對手。
- boltons.strutils.html2text(html)[源代碼]?
從HTML文本中剝離標簽,返回無標記文本。此外,還會盡最大努力替換“ ;”等實體
>>> r = html2text(u'<a href="#">Test &<em>(Δημώ)</em></a>') >>> r == u'Test &(Δημ?)' True
- boltons.strutils.indent(text, margin, newline='\n', key=<class 'bool'>)[源代碼]?
缺少內置的對應部件
textwrap.dedent()
。
- boltons.strutils.is_ascii(text)[源代碼]?
檢查Unicode或字節串, text ,僅由ASCII字符組成。加薪
ValueError
如果參數不是文本。- 參數:
text (str or unicode) -- 要檢查的字符串。
>>> is_ascii('Beyoncé') False >>> is_ascii('Beyonce') True
- boltons.strutils.is_uuid(obj, version=4)[源代碼]?
檢查參數是否為有效的UUID對象或字符串。
>>> is_uuid('e682ccca-5a4c-4ef2-9711-73f9ad1e15ea') True >>> is_uuid('0221f0d9-d4b9-11e5-a478-10ddb1c2feb9') False >>> is_uuid('0221f0d9-d4b9-11e5-a478-10ddb1c2feb9', version=1) True
- boltons.strutils.iter_splitlines(text)[源代碼]?
喜歡
str.splitlines()
,但返回行的迭代器而不是列表。也類似于file.next()
,因為這也會懶惰地從文件中讀取和生成行。此函數適用于各種行尾,但與往常一樣,在文件中混用行尾時要小心。
>>> list(iter_splitlines('\nhi\nbye\n')) ['', 'hi', 'bye', ''] >>> list(iter_splitlines('\r\nhi\rbye\r\n')) ['', 'hi', 'bye', ''] >>> list(iter_splitlines('')) []
- boltons.strutils.ordinalize(number, ext_only=False)[源代碼]?
轉彎 number 轉換為其基本形式,即第一、第二、第三、第四等。如果最后一個字符不是數字,則返回不變的字符串值。
>>> print(ordinalize(1)) 1st >>> print(ordinalize(3694839230)) 3694839230th >>> print(ordinalize('hi')) hi >>> print(ordinalize(1515)) 1515th
- boltons.strutils.parse_int_list(range_string, delim=',', range_delim='-')[源代碼]?
參數返回正整數的排序列表。 range_string 。反轉
format_int_list()
。- 參數:
range_string (str) -- 逗號分隔的正整數或范圍的字符串(例如‘1,2,4-6,8’)。打印機對話框中使用的自定義頁面范圍字符串的典型特征。
delim (char) -- 默認為‘,’。分隔整數和連續的整數范圍。
range_delim (char) -- 默認為‘-’。指示整數的連續范圍。
>>> parse_int_list('1,3,5-8,10-11,15') [1, 3, 5, 6, 7, 8, 10, 11, 15]
- boltons.strutils.pluralize(word)[源代碼]?
半智能地將一名英國人 word 從單數形式到復數形式,保留大小寫模式。
>>> pluralize('friend') 'friends' >>> pluralize('enemy') 'enemies' >>> pluralize('Sheep') 'Sheep'
- boltons.strutils.singularize(word)[源代碼]?
半智能地轉換英語復數 word 到它的單數形式,保留大小寫模式。
>>> singularize('chances') 'chance' >>> singularize('Activities') 'Activity' >>> singularize('Glasses') 'Glass' >>> singularize('FEET') 'FOOT'
- boltons.strutils.slugify(text, delim='_', lower=True, ascii=False)[源代碼]?
一個基本函數,用于將充滿可怕字符(即標點符號和空格)的文本轉換為相對安全的小寫字符串,僅由指定的分隔符分隔 delim ,它缺省為
_
。這個 ascii 便利旗幟將
asciify()
如果您需要僅限ASCII的彈頭,則可以選擇彈頭。>>> slugify('First post! Hi!!!!~1 ') 'first_post_hi_1'
>>> slugify("Kurt G?del's pretty cool.", ascii=True) == b'kurt_goedel_s_pretty_cool' True
- boltons.strutils.split_punct_ws(text)[源代碼]?
而當
str.split()
將在空格上拆分,split_punct_ws()
將在標點符號和空格上拆分。這是由內部使用的slugify()
上圖。>>> split_punct_ws('First post! Hi!!!!~1 ') ['First', 'post', 'Hi', '1']
- boltons.strutils.strip_ansi(text)[源代碼]?
將ANSI轉義代碼從 text 。在日志或重定向輸出意外捕獲控制臺顏色代碼等情況下非常有用。
>>> strip_ansi('[0m[1;36mart[46;34m') 'art'
支持Unicode、字符串、字節和字節數組內容作為輸入。返回與輸入相同的類型。
有許多ANSI ART可用于測試 sixteencolors.net 。此函數不解釋或呈現ANSI圖片,但您可以使用 ansi2img 或 escapes.js 。
- boltons.strutils.under2camel(under_string)[源代碼]?
將帶下劃線的字符串轉換為駝色大小寫。用于將函數名轉換為類名。
>>> under2camel('complex_tokenizer') 'ComplexTokenizer'
- boltons.strutils.unit_len(sized_iterable, unit_noun='item')[源代碼]?
返回迭代數的純英語描述
len()
,有條件地用復數cardinalize()
,詳情如下。>>> print(unit_len(range(10), 'number')) 10 numbers >>> print(unit_len('aeiou', 'vowel')) 5 vowels >>> print(unit_len([], 'worry')) No worries
- boltons.strutils.unwrap_text(text, ending='\n\n')[源代碼]?
文本解開,這是對
textwrap.wrap()
。>>> text = "Short \n lines \nwrapped\nsmall.\n\nAnother\nparagraph." >>> unwrap_text(text) 'Short lines wrapped small.\n\nAnother paragraph.'
- 參數:
text -- 要解開的字符串。
ending (str) -- 要連接所有未換行段落的字符串。經過
None
才能拿到名單。為與Markdown和RST兼容,默認設置為‘nn’。