所以我有一个基本问题;我让用户调用一个接受字符串输入的函数 例如,假设在这种情况下苹果。所以函数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
答案 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)