所以我试图在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
列表中,我不希望这样。
答案 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
模块为您完成剩下的工作: - )。