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
初学者,希望讲解一下,谢谢~ 展开
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
初学者,希望讲解一下,谢谢~ 展开
5个回答
展开全部
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
这个教程不错,推荐
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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、依次输出人名和平均数
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'将其切分成每行的列表,然后再对每行列表进行遍历和切分(此时可以按照空格切分)。这样一次次切分,最终得到你要的数据,进行数据整理和运算。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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()
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()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询