回 帖 发 新 帖 刷新版面

主题:[原创]求助如何处理这个文件啊

文本文件内容
[color=FF0000]: DBAVI      VN01,VTYPE:VRMS,
             LINE0,
          CMP80,X3969615,Y40114963,DACT-54,
             T198V2300,T341V3162,T475V3712,
             T625V4100,T897V4375,T1163V4400,
             T1445V4500,T1778V4687,T2126V4950,
             T2976V5612,T4847V6512,
             VF6500,
          CMP160,X3969615,Y40124955,DACT-25,
             T190V2307,T319V3086,T500V3900,
             T701V4225,T972V4403,T1146V4420,
             T1356V4441,T1484V4458,T1626V4549,
             T1745V4674,T1910V4812,T2452V5212,
             T2946V5566,T3629V5916,T4859V6512,
             VF6500,
          CMP240,X3969615,Y40134947,DACT6,
             T205V2532,T426V3607,T605V4020,
             T780V4225,T916V4358,T1048V4433,
             T1150V4400,T1257V4449,T1393V4462,
             T1500V4512,T1632V4650,T1841V4808,
             T2405V5178,T2782V5469,T3516V5865,
             T4871V6500,
             VF6500,
          CMP320,X3969615,Y40144938,DACT7,
             T212V2516,T414V3449,T592V3875,
             T782V4141,T981V4194,T1127V4253,
             T1225V4300,T1376V4323,T1507V4411,
             T1632V4478,T1777V4590,T1989V4794,
             T2297V5033,T3469V5866,T4900V6500,
             VF6500,
          CMP400,X3969615,Y40154930,DACT-42,
             T225V2360,T466V3536,T572V3803,
             T767V4075,T977V4236,T1125V4350,
             T1258V4337,T1361V4345,T1450V4387,
             T1680V4541,T1825V4661,T2299V5066,
             T2698V5316,T3371V5811,T4900V6550,
             VF6500,
          CMP480,X3969614,Y40164921,DACT2,
             T248V2432,T428V3487,T611V3933,
             T797V4150,T991V4315,T1154V4412,
             T1367V4487,T1508V4574,T1625V4612,
             T2000V4820,T2523V5215,T3700V5978,
             T4884V6553,
             VF6500,
          CMP560,X3969614,Y40174913,DACT64,
             T150V2050,T300V3000,T400V3500,
             T483V3750,T645V3950,T995V4300,
             T1300V4450,T1918V4775,T2672V5350,
             T3557V5875,T4869V6525,
             VF6500,[/color]
如何得到这样的结果:
CMP80
T198V2300
T341V3162
T475V3712
T625V4100
T897V4375
T1163V4400
T1445V4500
T1778V4687
T2126V4950
、、、、、


多谢

回复列表 (共6个回复)

沙发

期待中,我昨天晚上想试着做一下,结果半天没弄成功,请高手出来指点
[em12]

板凳

今天我又重新调试了一下,还是不能满足楼主的要求,我现在把代码跟输出结果粘上去,请各位高手指点,以便改进,拜托了!
代码:
program main
  implicit none
  integer::i,counter,zero
  character(len=1)::tt
  character(len=50),allocatable::cc(:)
  zero=0
  
  open(10,file='input.txt') !输入文件
  open(11,file='output.txt') !输出文件

  do while(.not.eof(10)) !先判断文件的行数,用于重新分配数组
    read(10,"(a1)") tt
    counter=counter+1
  end do
  rewind(10)
  
  allocate(cc(counter)) !重新分配数组,把全部数据读入数组
  do while(.not.eof(10))
    read(10,"(a50)",iostat=zero) cc
  end do
  close(10)

  do I=1,counter 
    if(scan(cc(i),'C')==11) then  !如果开头是C则只输出第一个数
      write(11,"(a16)") trim(cc(i))
    else
      write(11,*) trim(cc(i))
    end if
  end do
  close(11)
  stop  
end program main
输出结果:
          CMP80,
              T198V2300,T341V3162,T475V3712,
              T625V4100,T897V4375,T1163V4400,
              T1445V4500,T1778V4687,T2126V4950,
              T2976V5612,T4847V6512,
              VF6500,
          CMP160
              T190V2307,T319V3086,T500V3900,
              T701V4225,T972V4403,T1146V4420,
              T1356V4441,T1484V4458,T1626V4549,
              T1745V4674,T1910V4812,T2452V5212,
              T2946V5566,T3629V5916,T4859V6512,
              VF6500,
          CMP240
              T205V2532,T426V3607,T605V4020,
              T780V4225,T916V4358,T1048V4433,
              T1150V4400,T1257V4449,T1393V4462,
              T1500V4512,T1632V4650,T1841V4808,
              T2405V5178,T2782V5469,T3516V5865,
              T4871V6500,
              VF6500,
          CMP320
              T212V2516,T414V3449,T592V3875,
              T782V4141,T981V4194,T1127V4253,
              T1225V4300,T1376V4323,T1507V4411,
              T1632V4478,T1777V4590,T1989V4794,
              T2297V5033,T3469V5866,T4900V6500,
              VF6500,
          CMP400
              T225V2360,T466V3536,T572V3803,
              T767V4075,T977V4236,T1125V4350,
              T1258V4337,T1361V4345,T1450V4387,
              T1680V4541,T1825V4661,T2299V5066,
              T2698V5316,T3371V5811,T4900V6550,
              VF6500,
          CMP480
              T248V2432,T428V3487,T611V3933,
              T797V4150,T991V4315,T1154V4412,
              T1367V4487,T1508V4574,T1625V4612,
              T2000V4820,T2523V5215,T3700V5978,
              T4884V6553,
              VF6500,
          CMP560
              T150V2050,T300V3000,T400V3500,
              T483V3750,T645V3950,T995V4300,
              T1300V4450,T1918V4775,T2672V5350,
              T3557V5875,T4869V6525,
              VF6500,

3 楼

顺便问一下,怎么删除字符串前面的空格?

4 楼

楼主所说的问题,可用金山卫士进行解决。金山卫士是当前查杀木马能力最强、检测漏洞最快、体积最小巧的免费安全软件。它独家采用双引擎技术,云引擎能查杀上亿已知木马,独有的本地V10引擎可全面清除感染型木马;漏洞检测针对windows7优化,速度比同类软件快10倍;更有实时保护、软件管理、插件清理、修复IE、启动项管理等功能。百度金山卫士

5 楼

学生推荐一个暑假兼职的好工作



给《读者》推荐文章就可以赚钱,一篇稿费高达百元,我去年暑假做的还不错哦!希望这个暑假兼职,结交一些喜欢文摘推客的朋友,一起讨论文摘推客的经验。我们老师的QQ是100788026 (中国文摘推客

) 对这个暑假兼职工作感兴趣的朋友请跟帖留下你的QQ号码,我们将免费指导您学习文摘推客赚钱的方法。随到随学!

6 楼

program main
  implicit none
  integer::i
  integer::n  
  character(len=50)::string
  character(len=50)::str(3)
  
  open(10,file='input.txt') !输入文件
  open(11,file='output.txt') !输出文件 
  
    do while(.not.eof(10))
      read(10,'(a50)') string   
      string=adjustl(string)  
      if(string(1:1)=='C') then  !如果开头是C
        read(string,*) str(1)
        write(11,'(a20)') str(1)
      elseif(string(1:1)=='T') then !如果开头是T
      
        n=0                          !统计本行数据个数
        do i=1,50
        if(string(i:i)==',') n=n+1
        enddo  
              
        read(string,*) (str(i),i=1,n) !从字符串中将数据读出
        do i=1,n
        write(11,'(a20)') str(i)
        enddo    
    
    end if
  end do
  close(10)
  close(11)
  stop  
end program main

我来回复

您尚未登录,请登录后再回复。点此登录或注册