python将txt文件中的字符和数字单独提取

例如文件内容为Bird,Big7842767580Bear,Jasper818081818382Bunny,Bugs3456675872将每句的数字和人名单独提出来并计算... 例如文件内容为
Bird, Big 78 42 76 75 80
Bear, Jasper 81 80 81 81 83 82
Bunny, Bugs 34 56 67 58 72
将每句的数字和人名单独提出来并计算平均数
再逐行打出来
结果范例:
Big Bird 70.20
Jasper Bear 81.33
Bugs Bunny 57.40
初学者,希望讲解一下,谢谢~
展开
 我来答
刺友互
高粉答主

2019-06-19 · 每个回答都超有意思的
知道答主
回答量:3979
采纳率:100%
帮助的人:73.5万
展开全部

1、打开pycharm编辑器。

2、在文件中写上这个程序的注释。

3、新建一个变量test8。test8="my name is luo"。

4、利用replace函数将字符串中的my换成you,test8.replace('my','you')。

5、将结果打印出来。

6、在窗口中选择"run"->"run"。

7、运行这个程序,这时候语句就变成了you name is luo。

herewjz
推荐于2017-10-13 · TA获得超过396个赞
知道小有建树答主
回答量:130
采纳率:100%
帮助的人:118万
展开全部
import re

def getDigiStr(file_path):
    fp = open(file_path, 'r')
    file_text = fp.read()
    digi_str = re.findall(r'([0-9]+)',file_text,re.MULTILINE)
    fp.close()
    #数字
    return ''.join(digi_str)


def getLetterStr(file_path):
    fp = open(file_path, 'r')
    file_text = fp.read()
    letter_str = re.findall(r'([a-zA-Z]+)',file_text,re.MULTILINE)
    fp.close()
    #字母
    return ''.join(letter_str)

if __name__ == '__main__':
    print(getDigiStr(r'test.txt'))
    print(getLetterStr(r'test.txt'))

最快的方式使用正则表达式:

http://www.jb51.net/tools/zhengze.html


这个教程不错,推荐

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱卿平身免礼
推荐于2017-10-06 · TA获得超过227个赞
知道小有建树答主
回答量:249
采纳率:100%
帮助的人:145万
展开全部
filename = '/var/..../a.txt'
f = open(filename)
whlie True:
if data:
data = f.readlines()
data_list = data.split(' ')
num_sum = 0
for i in data_list[1:]:
num_sum += i

for j in data_list[0].split(‘,’):
print j,
print num_sum / (len(data_list) - 1)
else:

break

f.close()

代码没有测试,仅供参考!
原理:
1、将文件按行读取出来;
2、对每行按照空格进行切分,得到一个列表;
3、取列表从第二个到最后一个元素进行求和;
4、将列表第一个元素按照逗号切分,得到一个列表;
5、依次输出人名和平均数
追问
请问怎么将每一行单独计算?
我写出来结果是把所有数字加在了一起
追答
提供你个思路,可以使用read()将整个文件读出来,然后进行多次切分,首先按照‘\n'将其切分成每行的列表,然后再对每行列表进行遍历和切分(此时可以按照空格切分)。这样一次次切分,最终得到你要的数据,进行数据整理和运算。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6da7c4f
2013-11-04 · 超过15用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:30.1万
展开全部
import re
f_In_Name = 'test.txt'
f_I = open(f_In_Name)
f_Out_Name = 'output.txt'
f_O = open(f_Out_Name, 'w')
f_I_Lines = f_I.read().split('\n')
f_I_Lines.pop()
for line in f_I_Lines:
s = re.findall(r'[a-zA-Z]+', line)
for Name in s:
f_O.write(Name + ' ')
n = re.findall(r'[0-9]+', line)
Sum = 0
for i in n:
Sum += int(i)
ave = round(Sum / float(len(n)), 2)
f_O.write(str(ave) + '\n')
f_I.close()
f_O.close()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
張員瑛
2013-11-04 · TA获得超过154个赞
知道小有建树答主
回答量:296
采纳率:0%
帮助的人:249万
展开全部
ls="""Bird, Big 78 42 76 75 80
Bear, Jasper 81 80 81 81 83 82
Bunny, Bugs 34 56 67 58 72""".split("\n")
for l in ls:
    ws=l.split()
    name=ws[1]+' '+ws[0]
    fs=ws[2:]
    print name,fs
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式