找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 4384|回复: 6

[已解决] 指定行内容替换

3

主题

10

帖子

10

积分

贫民

积分
10
xywang52 发表于 2016-10-11 21:42:49 | 显示全部楼层 |阅读模式
有两个文档,A.txt和B.txt,
想读取A中的1~3行内容替换B中2~4行内容,该怎么实现呢。

A
111
222
333
444
555

B
aaa
bbb
ccc
ddd
eee
回复

使用道具 举报

1419

主题

1891

帖子

291

积分

侠客

积分
291

最佳新人热心会员默默耕耘

whydo1 发表于 2016-10-13 20:06:20 | 显示全部楼层
在我的机子上index('333')是可以的.

index要求必须是完整匹配. 所以只有部分匹配的话, 只能一个个比较了. 你的另一个帖子中leftloveu的回答已经解决了你的这个问题了.
回复 支持 1 反对 0

使用道具 举报

1419

主题

1891

帖子

291

积分

侠客

积分
291

最佳新人热心会员默默耕耘

whydo1 发表于 2016-10-11 22:33:46 | 显示全部楼层
  1. import sys
  2. 当前路径 = sys.path[0]

  3. a文件 = open(当前路径 + '\\a.txt')
  4. b文件 = open(当前路径 + '\\b.txt', 'r')

  5. a内容 = a文件.readlines()
  6. b内容 = b文件.readlines()

  7. b内容[1] = a内容[0]
  8. b内容[2] = a内容[1]

  9. a文件.close()
  10. b文件.close()

  11. b文件 = open(当前路径 + '\\b.txt', 'w')
  12. b文件.write(''.join(b内容))

  13. print(''.join(b内容))
复制代码
回复 支持 反对

使用道具 举报

3

主题

10

帖子

10

积分

贫民

积分
10
xywang52  楼主| 发表于 2016-10-12 22:15:20 | 显示全部楼层

问题解决了

b内容[100:200] = a内容[0:100]
这样可以替换多行内容

ps. file.close()应该在最后,要不保存不了
回复 支持 反对

使用道具 举报

3

主题

10

帖子

10

积分

贫民

积分
10
xywang52  楼主| 发表于 2016-10-12 22:18:11 | 显示全部楼层

继续这个问题,如果要查找a.txt中特定字符'333'所在的行号,该怎么实现的呢

A
111
222
333
444
555
回复 支持 反对

使用道具 举报

1419

主题

1891

帖子

291

积分

侠客

积分
291

最佳新人热心会员默默耕耘

whydo1 发表于 2016-10-12 22:54:50 来自手机 | 显示全部楼层
本帖最后由 whydo1 于 2016-10-13 08:23 编辑

你说的很对。所有打开的文件最后都应关闭。更完善的代码在打开文件时还应增加异常处理。可以用  a内容.index('333')  获取行号,注意是从零开始的。
回复 支持 反对

使用道具 举报

3

主题

10

帖子

10

积分

贫民

积分
10
xywang52  楼主| 发表于 2016-10-13 19:00:03 | 显示全部楼层
whydo1 发表于 2016-10-12 22:54
你说的很对。所有打开的文件最后都应关闭。更完善的代码在打开文件时还应增加异常处理。可以用  a内容.inde ...
  1. fa = open('D:\\Dir_Python\\a.txt')
  2. a=fa.readlines()
  3. for lineNum in a:
  4.     lineNum = a.index('333')
  5. print lineNum
复制代码


有两个问题:
1、只有查找内容在最后一行才可以返回行号,即index('555')可以,index('333')会提示找不到
2、必须该行的完整字符,index('55')也是找不到

python小白一枚,该怎样修正下以上代码呢

A:
111
222
333
444
555
回复 支持 反对

使用道具 举报

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

本版积分规则

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