在for循环中使用str.replace

时间:2017-10-09 13:16:13

标签: python

我正在进行一项任务,要求我更改下面的代码,以便第4行使用str.isalnum,第5-7行只使用str.replace使用一行。

s = 'p55w-r@d'
result = ''
for c in s:
    if(c not in 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'):
        result += '*'
    else:
        result += c
print(result)

这是我到目前为止所做的:

s = 'p55w-r@d'
result = ''
for c in s:
    if(c.isalnum() == False):
        result += c.replace(c,'*')
print(result)

第二个代码的输出需要等于代码1的输出:

p55w*r*d

4 个答案:

答案 0 :(得分:1)

只需添加其他部分即可完成:

s = 'p55w-r@d'
result = ''
for c in s:
    if(c.isalnum() == False):
        result += c.replace(c,'*')
    else:
        result +=c 
print(result)

p55w*r*d

答案 1 :(得分:0)

我知道如何在2个字符串中使用相同的内容:

s = 'p55w-r@d'
print(''.join(map(lambda x: x if x.isalnum() else '*', s)))

OUT:

p55w*r*d

答案 2 :(得分:0)

在仍然有意义的情况下,最接近你的作业要求的是:

s = 'p55w-r@d'
result = s  # Note the change here
for c in set(s):  # set(..) is not strictly necessary, but avoids repeated chars
    if not c.isalnum():
        result = result.replace(c, '*')

答案 3 :(得分:0)

你可以在等于之后使用if else。

msg = MIMEMultipart()
msg['Subject'] = 'Bewegung erkannt!'+' '+timestr
msg['From'] = 'surveillance.picam@gmail.com'
msg['To'] = 'fuchsfan23@gmail.com'

body = email.mime.Text.MIMEText("""Bewegung erkannt! Hier ist der Eindrinling!""")
msg.attach(body)

directory = '/home/pi/Pictures/RaspCam/bild_{}.jpg'.format(timestr)

spl_dir=directory.split('/')

filename=spl_dir[len(spl_dir)-1]

spl_type=directory.split('.')

type=spl_type[len(spl_type)-1]
fp=open(directory,'rb')
att = email.mime.application.MIMEApplication(fp.read(),_subtype=type)
fp.close()
att.add_header('Content-Disposition','attachment',filename=filename)
msg.attach(att)

s = smtplib.SMTP('smtp.gmail.com:587')
s.starttls()
s.login('mailaddress1','passwd')
s.sendmail('mailaddress1','mailaddress2', msg.as_string())
s.quit()