关于我们的大脑有多聪明的链接电子邮件

时间:2015-01-23 06:19:37

标签: python append

所以我试图在Python中重现我到处都看到过的东西,正在转向:

大学是一所高等教育和研究机构 授予各种科目和学位的学位 提供本科教育和研究生教育 大学这个词源自拉丁语大学 magistrorum et scholarium大致意味着教师社区 和学者

进入这个:

utisreviny是hehgir eoitacudn和rcraeseh的ioitutitsnn wcihh gtnars aimacc deerges in a vteiray of stcejbus and peditors btoh utaudargredne eoitacudn and ptaudargtsoe eoitacudn 从Litan uatisrevins开始改编 murortsigam et suiralohcm wcihh rlhguoy mnaes ctinummoy of trehcaes 和sralohcs

我正在努力做到这一点,接受sys.stdin并且我想要取第一个字母,然后是第一个和最后一个,然后是最后一个。我一直在玩字符串切片,这就是我所做的:

import sys

def main():
    new_file = []
    for line in sys.stdin:
        for word in line:
            if len(word) == 1:
                new_file += word
        else:
            new_file += word[0]+word[::-1]+word[-1]
    return new_file

print main()

它会将每个字母打印到我的new_file列表中,我不希望这样。

1 个答案:

答案 0 :(得分:1)

for word in line:循环遍历line中的字符 - 这是如何循环字符串的作品! (也许是Python新手出现错误的首要原因)。

您可能需要for word in line.split():,但这会忽略您可能希望保留的空格和标点符号。

你可能会选择正则表达式,例如......:

def smurk(mo):
    w = mo.group(0)
    if len(w) < 4: return w
    return w[0] + w[-2:0:-1] + w[-1]

...

line = re.sub(r'\w+', smurk, line)

...

你可以通过只匹配4个以上单词字符的序列来优化更多,但如果你不是一个RE向导,你最好建议你让RE变得简单,这个肯定是:&# 34;一个或多个单词字符&#34;。

替换函数smurk将匹配对象作为arg获取,从中获取单词(.group(0) == RE匹配的所有内容),避免对少于4个字符的任何单词执行不必要的工作对于4个以上字符的单词,并且行为(使用正确的切片,对你来说并非如此)。 re模块为您完成剩下的工作: - )。