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

例如文件内容为
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
初学者,希望讲解一下,谢谢~

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。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-13
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


这个教程不错,推荐

第2个回答  推荐于2017-10-06
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'将其切分成每行的列表,然后再对每行列表进行遍历和切分(此时可以按照空格切分)。这样一次次切分,最终得到你要的数据,进行数据整理和运算。

本回答被提问者和网友采纳
第3个回答  2013-11-04
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()
第4个回答  2013-11-04
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

相似回答