我是靠谱客的博主 爱笑草莓,最近开发中收集的这篇文章主要介绍Python之list 0.0,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

List开始之后就贱贱超过自己的“承受能力”了~╮(╯▽╰)╭working factory 和 everlasting memory没办法好好地转换。下面第一个栗子,一个简简单单的小memo,我居然用了一天。虽然中间上了个课。。。但还是不嗨森!!闲言少叙。开始吧~

来,上菜先:
Coursera Python 8.4
Open the file romeo.txt and read it line by line. For each line, split the line into a list of words using thesplit() function. The program should build a list of words. For each word on each line check to see if the word is already in the list and if not append it to the list. When the program completes, sort and print the resulting words in alphabetical order.

“Romeo.txt”:这里写图片描述

NAH….大量的数据我们一般都是用”A.txt”存储的,然而如果我们想要检索其中一小部分怎么办呢?

Firstly,我们得把txt读进来啊,赋予其一个变量

B=open('A.txt')

这个地方有几点需要说明。
首先,你要找的这个txt最好是在当前目录下,即和你的python程序在同一个文件夹里边儿。但如果你说,不行,我任性,我喜欢把所有txt存在一个文件夹里面,python存在另一个文件夹里面,那么你可以添加路径,如

B=open('C:/...../,,,,,,/A.txt')

QED~

其次呢,如果说我编好一个merge_sort的程序,我的输入文件是某个含有4个整数的txt文档,但素你说不行啊,老师给的作业明明是要merge_sort十万个数啊,那你就得一步步从含有4个整数的txt到含有10个整数的txt,到20个,21个,100个,。。。然后跟别人对答案,哎,这个inversion的值是不是对了啊….你终于可以试试那个含有10万个整数的txt,还怀揣着特别激动的心情…Anyway,这里我想说明的是,如果说你同一个程序想要对N个txt进行测试。那么,接下来这个方法很常用:

B=input("Enter file name:")

(Python3,python2中用raw_input

恩,这是什么意思呢?就是跳出一个框框,问你,姐们儿,今天想翻谁的牌子啊?然后你就啪嗒啪嗒把那个含十万个整数的txt的名字快速的输进去,然后一回车!
All right,这是事情进展一切顺利的时候,如若你含四个整数的程序还一直没跑通,一直debug的话,那就不好意思了,你就一直得输入文件名,心里一憋屈,麻蛋,还不如不加这个input呢。啊啊啊,不着急,偷懒的方法总是源源不断的。看看这段:

if len(B)<1: B="A.txt"

恩?神马意思捏?其实就是你什么都不输入,跳出让你翻牌子的框框之后,你心里一想,今天好累,不愿打字,一回车,啊,就自动帮你将txt的文档名赋予B了。关于list的输入就到这里~

Secondly,来我们再看看题目吧:给你一小段Romeo的台词,然后我们的目的是将这四行台词读入,将每个单词以string的形式存到数组里面,输出。

split()有一个很是强大的功能,就是把string中的元素以空格为分界点,将其split成N个元素,兰后通通存在list里面,每个元素是原来string中的每个由“(此处其实是一个space~~)”隔开的部分,并以string形式存储;但是如果你说不好意思,我的文档里边的东东不是直接用space隔开的,我平常喜欢用semicolon分隔元素,木问题,split(“;”)问你解决烦恼~同理啦,还可以用其它方式~~Okay上代码。

fname = raw_input("Enter file name: ")
if len(fname)<=1:
    fname = 'romeo.txt'
fh = open(fname)
lst = list()

for line in fh:
    pieces=line.split()
    #print pieces
    for i in range(len(pieces)):
        if pieces[i] not in lst:
            lst.append(pieces[i])
lst.sort()
print(lst)

此代码中最需要注意的地方:因为这个txt里面每行到第二行不是相连的,也不是用空格隔开的,所以我们按“行”读取,当然了,我代码中的line也可以换成别的noun。将每行输入后,我们就可以split了,line.split()赋予pieces后,其结果是以每行为一个单元,用空格隔开各个string的一个数组。如图:
这里写图片描述
这显然不是我们想要的,我们要把所有单词放在一个list里面,并且要alphabetically sort;且防止已经出现的单词再次放进来。将pieces转换成list时,我犯了很重要的错误,忘记了pieces也是一个数组,因此在append lst的时候,应该用到index。即第二个for循环。

2015/4/1
今天做dictionary部分作业的时候详细了解了一下.read()的用法(实际上原来也知道,只是人老了,忘记了- -),其实更确切的说是.read() & .split()的搭配。.read()将整个txt读入成一个string,若后面紧跟split的话,split将new line 符号“n”当作space直接省去, that is to say, 能将两行内容无缝接合。省去了很多麻烦,例如卤煮之前很耐用的strip()就可以休息会儿了。但素。切记仅限于txt较小的情况,若平txt内容相当多,小心死机…此时仍推荐strip.WHATEVER,经改良后的code如下。

fname = raw_input("Enter file name: ")
if len(fname)<=1:
    fname = 'romeo.txt'
fh = open(fname)
fh1=fh.read()
fh2=fh1.split()
lst = []

for wrd in fh2:
    if wrd not in lst:lst.append(wrd)
lst.sort()
print lst

——————————————————-

~好哒。第一道main course结束,上第二道菜。
Coursera Python 8.5
Open the file mbox-short.txt and read it line by line. When you find a line that starts with ‘From ’ like the following line:
From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008
You will parse the From line using split() and print out the second word in the line (i.e. the entire address of the person who sent the message). Then print out a count at the end.
*Hint: make sure not to include the lines that start with ‘From:’.
data:这里写图片描述

傻,不要看图片了,眼睛会花的。这道题呢,意思找到每个以fron开头的行,把第二个元素“[1]”输出。
一说到要筛选出以什么什么开头的某行,你一定会联想到startswith,并将其转为一个boolean。如下:

if line.startswith("from"):

那如何截取我们要的name@add这部分呢?我们原来学过一种傻的基础的方法是find。比如:

C=B.find('~~')

然后,C就成为了你这行中“~~”出现的index数。B[C:]就表示从C开始一直到最后的所有的元素了。
然而这道题我们不行,因为我们截取段前和后都是white space,所以无解。如果不一样的话,我们可以分别得到两个index值,然后B[C:D+1]。注意此处D应该+1。因为后者是up to but not including。

好了。注意事项结束。上代码~

fname = raw_input("Enter file name: ")
if len(fname) < 1 : fname = "mbox-short.txt"

fh = open(fname)
count = 0

for line in fh:
    #line = line.strip()
    if not line.startswith('From '):continue
    pieces = line.split()
    count += 1
    print(pieces[1])

print "There were", count, "lines in the file with From as the first word"

今天就到这里啦。周一哪有那么多闲工夫,还学别人写博客。我也是服了你了,Gabriella!

最后

以上就是爱笑草莓为你收集整理的Python之list 0.0的全部内容,希望文章能够帮你解决Python之list 0.0所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(29)

评论列表共有 0 条评论

立即
投稿
返回
顶部