[笔记] 创建python中的字符串translator

将python中的字符串的某些字符转化为特定字符是经常用到string库中的maketrans()函数,以及translate()函数。 但是这两个函数比较抽象: maketrans函数产生的对象是一个表,这个数据结构对初学者并不友好。 tranlate(table, deleteValue)函数所需的第一个参数是个表结构,也就是maketrans的返回值,deleteValue是所要删除的字符。这第二个参数很别扭:一个translate函数,有时候还能删除某些字符。 而且使用过程中,往往两个函数是在一起使用的,不如直接把合成为一个函数,更加方便。

在使用translator的过程中,我们经常需要四个参数:源字符串,目标字符串,两者一一对应,要保留的字符,要删除的字符。所以,直接以这四个参数为输入建立新的函数:

import string
def translator(origin='',target='',delete='',keep=''):
    """
    keep is primer than delete
    but keep without chars in delete
    """
    if len(target) == 1:
        target *= len(origin)
    assert(len(target)==len(origin))
    if keep != '':
        allchars = string.maketrans('','')
        keep = keep.translate(allchars,delete)
        delete = allchars.translate(allchars,keep)
    trans = string.maketrans(origin,target)
    def translate(sss):
        return sss.translate(trans,delete)
    return translate

此时的translator函数需要我们先构造函数,然后再调用返回的函数。

比如

>>>trans = translator(delete='abcd',keep='cdef')

>>>trans('abcdefgll')

'ef'

应当注意delete与keep之间的关系。

>>>digit2hash = translator(origin = string.digits,target='@')

>>>digit2hash('myjiayan: 368-346-290')

'myjiayan: @@@-@@@-@@@'

这就是还算不错的translator函数。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python可以使用正则表达式来提取字符串的单词。可以使用re.findall()函数来实现。例如: ``` import re text = "This is a sentence with several words" words = re.findall(r'\b\w+\b', text) print(words) ``` 输出结果为: ``` ['This', 'is', 'a', 'sentence', 'with', 'several', 'words'] ``` 也可以使用string.split()函数来实现 ``` text = "This is a sentence with several words" words = text.split(' ') print(words) ``` 输出结果为: ``` ['This', 'is', 'a', 'sentence', 'with', 'several', 'words'] ``` ### 回答2: 在Python,可以使用split()函数来提取字符串的单词。split()函数会将字符串按照空格进行分割,并返回一个包含分割后单词的列表。 例如,有一个字符串s = "Hello world! This is a sample string.",我想提取出其的单词。可以使用split()函数来实现: words = s.split() print(words) 运行以上代码,输出结果为:['Hello', 'world!', 'This', 'is', 'a', 'sample', 'string.'] 如果字符串存在其他分隔符,也可以在split()函数指定分隔符。例如,如果字符串s = "Hello-world!This/is/a/sample-string.",我们可以使用split('-')来按照"-"进行分割,并提取出单词: words = s.split('-') print(words) 运行以上代码,输出结果为:['Hello', 'world!This/is/a/sample', 'string.'] 需要注意的是,split()函数默认以空格作为分隔符,如果字符串存在连续的多个空格,则会被视为一个空格进行分割。 另外,如果需要删除字符串的标点符号,可以使用字符串translate()函数配合使用translate()函数string.punctuation属性来实现。具体做法是,先导入string模块,然后使用translate()函数替换字符串的标点符号为空格,再利用split()函数来提取单词。例如: import string translator = str.maketrans('', '', string.punctuation) s = "Hello, world! This is a sample string." s = s.translate(translator) words = s.split() print(words) 运行以上代码,输出结果为:['Hello', 'world', 'This', 'is', 'a', 'sample', 'string'] 这样就实现了提取字符串的单词并去除标点符号的功能。 ### 回答3: 要在Python提取字符串的单词,我们可以使用split()函数。split()函数将会把字符串分割成一个个的单词,并返回一个包含所有单词的列表。 例如,假设我们有一个字符串"Hello, how are you?",我们可以使用split()函数提取其的单词,具体代码如下: ``` string = "Hello, how are you?" words = string.split() print(words) ``` 这段代码将会输出以下结果: ``` ['Hello,', 'how', 'are', 'you?'] ``` 可以看到,字符串被成功地分割成了四个单词。 如果字符串有特殊符号或标点符号,我们可以使用正则表达式来去除它们,只提取单词。下面是一个示例代码: ``` import re string = "Hello, how are you?" words = re.findall(r'\b\w+\b', string) print(words) ``` 这段代码使用了re.findall()函数来匹配字符串的所有单词,并返回一个包含所有单词的列表。输出结果与之前的代码相同。 总结来说,Python提取字符串的单词可以使用split()函数或正则表达式,具体方法取决于字符串是否有特殊符号或标点符号。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值