用c语言或者python将文件中特定字符串后面的数字相加

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用c语言或者python将文件中特定字符串后面的数字相加相关的知识,希望对你有一定的参考价值。

从点评网爬了一些餐馆的评论
每家餐馆是一个文件,现在想统计评论数,求读取每个文件中 “评论人数:60” 中 的60并相加,求具体程序,60是个例子

代码应该不难吧。既然用爬虫爬下来了,为什么爬取数据的时候没做处理呢。

之前用过Scrapy爬虫框架,挺好用的,你可研究下。

代码:

#!coding=utf-8
import os
import re
import random

# 获取当前目录文件列表
def getNum():
    flist = os.listdir(os.getcwd())
    # 遍历文件
    for f in flist:
        if f != os.path.basename(__file__):
            with open(f, 'r') as fn:
                text = fn.read()
                num = re.findall(r'评论人数:(\\d+)', text)
                print f, num


# 文件写入测试
def test():
    for i in range(10):
        with open('%d.txt' % i, 'w') as f:
            f.write('文件:%d\\n每家餐馆是一个文件,统计评论数,求读取每个文件中 “评论人数:%d” 中 的60并相加,求具体程序,60是个例子' % (i, random.randint(1, 200)))
    print u'文件写入完毕'

if __name__ == '__main__':
    # test()
    getNum()

代码基本符合要求,但健壮性有些差。你自己用的时候修改吧

测试结果:

C:\\Python27\\python.exe D:/11/c.py
文件写入完毕
0.txt ['131']
1.txt ['181']
2.txt ['56']
3.txt ['119']
4.txt ['18']
5.txt ['103']
6.txt ['88']
7.txt ['115']
8.txt ['160']
9.txt ['136']

Process finished with exit code 0

追问

大神,文件路径怎么改?我没学过Python,代码都是别人给的。。

追答# 你把下面这句修改了
flist = os.listdir(os.getcwd())

# 改成下面的
flist = ''
print u'路径必须为全路径:如下示例'
print u'D:/test/'
flist = str(raw_input(u'输入路径,默认为当前目录'))
if list == '':
    flist = os.listdir(os.getcwd())

这样应该可以了

追问

谢谢大神了

参考技术A 1、先把字符串后面的数字截取出来,转换成数字格式即可相加。
2、C语言有atoi、atol、atof等库函数,可分别把ASCII编码的字符串转化为int、long、float类型的数字。
头文件:stdlib.h
函数原型:int atoi(const char* nptr);
(另外两个类似)

举个例子:
char *str="123";
int num=atoi(str);
执行后,num的值被初始化为123

用c语言编程实现输出100以内的所有是3的倍数,或者含有3的正整数。要求输出时所有的数都以逗号隔开

用c语言编程实现输出100以内的所有是3的倍数,或者含有3的正整数。要求输出时所有的数都以逗号隔开。最后还要输出符合条件的正整数一共有多少个

#include <iostream>
using namespace std;
int main()

int i;
cout<<"输出100以内能被3或者数字里面带有3的数字:"<<'\n';
for(i=3;i<=99;i++)

if(i%3==0||i%10==3||i/10==3)

cout<<i;
if(i<99) cout<<',';


cout<<'\n';
return 0;

抱歉,c语言的输出输入我不熟,不过其他都是一样的,以上按您的要求3的倍数和带有3的正整数还有数与数之间相隔一个逗号的要求都写好了,尽可能的写短了
希望对你有帮助!
参考技术A #include<stdio.h>

int main()

int count=0;
printf("100以内有如下数字是3的倍数:");

do

if (3*(count+1) < 100)

printf("%d,",3*count);

else

printf("%d",3*count);
break;


count++;
while (1);

printf("\n");
printf("总计有:%d个\n",count+1);

return 0;

算0用上面
不算0用下面
#include<stdio.h>

int main()

int count=1;
printf("100以内有如下数字是3的倍数:");

do

if (3*(count+1) < 100)

printf("%d,",3*count);

else

printf("%d",3*count);
break;


++count;
while (1);

printf("\n");
printf("总计有:%d个\n",count);

return 0;
参考技术B #include<iostream>
using namespace std;

int main()

int i=1,j=0;
cout<<"100以内3的倍数有:"<<endl;
while(i<=100)

if(i%3==0)

cout<<(i+3)<<" ";
j++;

i++;

cout<<endl;
cout<<"100以内3的倍数共有:"<<j<<endl;
return 0;

这里只有C++代码、、、追问

用c语言写

追答

#include
int main()

int i=1,j=0;
printf("100以内3的倍数有:\n");
while(i<=100)

if(i%3==0)

printf("%d",i);
printf(" ");
j++;

i++;

printf("\n");
printf("100以内3的倍数有:%d",j);
printf("\n");
return 0;

shabi 好心帮你,没好报

参考技术C ya178帮帮团:
从0开始,到100,能能被3整除的数都输出。追问

那含有3怎么表示

写好程序

不会就别装

以上是关于用c语言或者python将文件中特定字符串后面的数字相加的主要内容,如果未能解决你的问题,请参考以下文章

怎么用JS把特定字符串重复的字符删除留下一个

怎么用C语言对文件操作用特定内容替换其中某些内容

怎么用c语言播放特定目录里的wav文件?

用java怎样将一个文件中特定行列的数据读取出来

如何用c语言从一组给定数中找到一个数或者几个数的和使其值最接近指定的数

用c语言编程实现输出100以内的所有是3的倍数,或者含有3的正整数。要求输出时所有的数都以逗号隔开