鱼C论坛

 找回密码
 立即注册
查看: 7084|回复: 7

[已解决][新手问题] 文件读取的时候怎么隔行读取啊,python怎么统计每行英语单词数?

[复制链接]
发表于 2016-9-30 11:21:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 dodopromi 于 2016-9-30 13:29 编辑

比如我又这样一个文件,我要隔一行读一行, 不需要进行中英文划分,我单纯 要读一行跳一行,或者几行
或者这样说, 如果英文大于15个字节,就保留翻译, 或是中文超过8个字符,保留英文部分. 问一下怎么写
或者过滤掉英文单词小于5个的句子和翻译

I could smell it from the hallway.
求关注的二货
1
Jokers. Hungry for attention.
还渴求薯片
3
3
And potato chips.
如果零食算是种超能力
If the munchies was a superpower,
那他们都够格签《索科威亚协议》了
they'd be signing the Sokovia Accords as we speak.
你应该让我帮你修整洛拉
You should let me work on Lola.
我警告过你了  洛拉上的东西
最佳答案
2016-9-30 12:10:35
如果文本文件不大,可以一次读到内存中,用列表的操作,很容易做。
打印奇数行:
  1. with open('text.txt',encoding = 'utf-8') as f:
  2.     for eachline in list(f)[::2]:
  3.         print(eachline, end = "")
  4.     print()
复制代码


打印偶数行:
  1. with open('text.txt',encoding = 'utf-8') as f:
  2.     for eachline in list(f)[1::2]:
  3.         print(eachline, end = "")
  4.     print()
复制代码


如果不想一次全部读取,还可以:
  1. with open('text.txt',encoding = 'utf-8') as f:
  2.     display = True
  3.     for eachline in f:
  4.         if display == True:
  5.             print(eachline, end = '')
  6.         display = not(display)
  7.     print()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-9-30 11:38:30 From FishC Mobile | 显示全部楼层
while循环 配合if条件判断 实现起来不是很难
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-30 11:40:22 | 显示全部楼层
kox 发表于 2016-9-30 11:38
while循环 配合if条件判断 实现起来不是很难

用文件里的什么方法?或是属性?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-30 12:10:35 | 显示全部楼层    本楼为最佳答案   
如果文本文件不大,可以一次读到内存中,用列表的操作,很容易做。
打印奇数行:
  1. with open('text.txt',encoding = 'utf-8') as f:
  2.     for eachline in list(f)[::2]:
  3.         print(eachline, end = "")
  4.     print()
复制代码


打印偶数行:
  1. with open('text.txt',encoding = 'utf-8') as f:
  2.     for eachline in list(f)[1::2]:
  3.         print(eachline, end = "")
  4.     print()
复制代码


如果不想一次全部读取,还可以:
  1. with open('text.txt',encoding = 'utf-8') as f:
  2.     display = True
  3.     for eachline in f:
  4.         if display == True:
  5.             print(eachline, end = '')
  6.         display = not(display)
  7.     print()
复制代码

评分

参与人数 1鱼币 +1 收起 理由
dodopromi + 1 新手,不成敬意

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-9-30 12:41:53 | 显示全部楼层
本帖最后由 dodopromi 于 2016-9-30 12:43 编辑
冬雪雪冬 发表于 2016-9-30 12:10
如果文本文件不大,可以一次读到内存中,用列表的操作,很容易做。
打印奇数行:


先感谢一下, 认真回头学习

我就是边学,边做着玩. 没有要求. 就是希望给自己找点动力, 否则我视频也看不懂,习题也看不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-30 13:29:20 | 显示全部楼层
本帖最后由 dodopromi 于 2016-9-30 13:35 编辑
冬雪雪冬 发表于 2016-9-30 12:10
如果文本文件不大,可以一次读到内存中,用列表的操作,很容易做。
打印奇数行:


如果我下一行的英文符合要求,我要返回去打印中文上一行的中文,怎么弄.  

我没有办法把eachline像整形或是index一样+=1吗?

我要进行类似操作,怎么办?

不好意思, 我看代码慢,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-30 16:04:17 | 显示全部楼层
dodopromi 发表于 2016-9-30 13:29
如果我下一行的英文符合要求,我要返回去打印中文上一行的中文,怎么弄.  

我没有办法把eachline像整 ...

可以把上一行存在一个变量中,当判断下一行符合要求时再打印上一行的变量。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-30 17:25:24 | 显示全部楼层
冬雪雪冬 发表于 2016-9-30 16:04
可以把上一行存在一个变量中,当判断下一行符合要求时再打印上一行的变量。

我后来做了一个列表,把每行都写在列表中,然后按我熟悉的来. 最后真的能用.
然后我写的程序, 简直唠叨死了,有时间,模拟一下版主的, 就是我脑子不好使, 这种跳来跳去的,根本脑子转不过来
  1. f1 = open(r'C:\Documents and Settings\Administrator\桌面\学习\test\new1.txt','r')
  2. f2=open(r'C:\Documents and Settings\Administrator\桌面\学习\test\new2.txt','w')
  3. list=[]
  4. for each_line in f1:
  5.         list.append(each_line)
  6. for i in range(len(list)):        
  7.         if is_chinese(list[i]) and len(list[i])>10:
  8.             f2.writelines(list[i])
  9.             f2.writelines(list[i+1])
  10.             i+=1
  11.         if is_alphabet(list[i]) and len(list[i])>30 and len(list[i-1])<10:
  12.             f2.writelines(list[i-1])
  13.             f2.writelines(list[i])
  14. f1.close()
  15. f2.close()
复制代码


ps,版主先别走,我还有问题,要新开贴~~~~~~~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-23 02:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表