改变Python函数中的字符串

时间:2012-10-19 00:05:48

标签: python string function

所以我有一个基本问题;我让用户调用一个接受字符串输入的函数 例如,假设在这种情况下苹果。所以函数get_view被调用 get_view('apples')它的工作是将苹果中的所有字符转换为隐藏字符,例如'apples' - >'^^^^^^',你好世界会变成'^^^^^ ^^ ^^^'等等,我的问题是在我的代码下面它确实转换了所有字母和数字等,但它不会留下hello world之间的空白空间,它也不考虑(')。如何修改我的代码以使其完全正常运行?

代码:

def get_view(puzzle):

    view = puzzle
    length = len(puzzle)
    for index in range(0,length):
        if ((puzzle[index]) != '' or '-' ):
            view = view[: index] + HIDDEN + view[index+1:]

HIDDEN ='^'(它是常数)

谢谢你,网站的新用户< 3

3 个答案:

答案 0 :(得分:2)

我使用像regex这样的re.sub()函数进行大多数非平凡的字符串操作,如下所示:

import re
print(re.sub("[a-zA-Z0-9_']", "^", "Hello world, what's up?"))
#                                   ^^^^^ ^^^^^, ^^^^^^ ^^?

答案 1 :(得分:1)

你想做这样的事吗?

view = ''.join((HIDDEN if c.isalnum() else c) for c in puzzle)

答案 2 :(得分:1)

假设您不想改变空格字符(空格,制表符,换行符),这是使用for循环执行此操作的一种方法:

def get_view(puzzle, hide_char='^'):
    view = []
    for c in puzzle:
        if not c.isspace():
            view.append(hide_char)
        else:
            view.append(c)
    return ''.join(view)

或者(并且更好)是使用列表理解:

def get_view(puzzle, hide_char='^'):
    view = [c if c.isspace() else hide_char for c in puzzle]
    return ''.join(view)

或只是:

def get_view(puzzle, hide_char='^'):
    return ''.join(c if c.isspace() else hide_char for c in puzzle)