如何利用python批量替换字符

生信程序猿 2019-05-09 11:44:14
有两个文件分别为A.txt, B.txt A.txt的内容,一一对应 A B A B A1 B1 B.txt文件的内容为 A C D A C D A1 C1 D1 请问如何实现在A文件跟B的第一列匹配是用A的第二列替换掉B文件的第一列,生成新的文件。
...全文
345 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
notback 2019-05-21
  • 打赏
  • 举报
回复
简单方法,内存够大: 把a读进内存,读个dict 然后遍历b,每行替换。 看你的例子,貌似时行行对应。 a行1对应b行1 这个同时遍历readline不就好了?
一笑程序猴 2019-05-17
  • 打赏
  • 举报
回复
引用 2 楼 林显祖 的回复:
对的,是这样的,麻烦了


def read_write():
list_a = []
list_b = []
with open('a.txt','r') as f_a:
line_a = f_a.readline().replace('\n','')
while line_a:
list_a.append(line_a.split(' '))
line_a = f_a.readline().replace('\n','')

with open('b.txt','r') as f_b:
line_b = f_b.readline().replace('\n','')
while line_b:
list_b.append(line_b.split(' '))
line_b = f_b.readline().replace('\n','')
for i in range(len(list_a)):
if list_a[i][0] == list_b[i][0]:
list_b[i][0] = list_a[i][1]

with open('c.txt','w') as f_c:
for l in list_b:
f_c.writelines(' '.join(l))
f_c.writelines('\n')
print('success')

read_write()

生信程序猿 2019-05-17
  • 打赏
  • 举报
回复
引用 4 楼 萌新自学python中 的回复:
就当做是做题了
path = 'C:/Users/Administrator/Desktop/'
file_a = path + 'A.txt'
file_b = path + 'B.txt'
with open(file_a) as a, open(file_b) as b:
    lines_a = a.readlines()
    lines_b = b.readlines()
    content_a =[line_a.split() for line_a in lines_a]
    content_b =[line_b.split() for line_b in lines_b]
    i = 0
    while i in range(len(content_a)):
        idx_a = content_a[i][0]
        idx_b = content_b[i][0]

        if idx_a == idx_b:
            content_b[i][0] = content_a[i][1]
            i += 1
            
    new_file = open(path + 'C.txt', 'w')
    
    for j in range(len(content_b)):
        new_file.write(' '.join(content_b[j])+'\n')
        
    new_file.close()
非常感谢
生信程序猿 2019-05-17
  • 打赏
  • 举报
回复
引用 4 楼 萌新自学python中 的回复:
就当做是做题了
path = 'C:/Users/Administrator/Desktop/'
file_a = path + 'A.txt'
file_b = path + 'B.txt'
with open(file_a) as a, open(file_b) as b:
    lines_a = a.readlines()
    lines_b = b.readlines()
    content_a =[line_a.split() for line_a in lines_a]
    content_b =[line_b.split() for line_b in lines_b]
    i = 0
    while i in range(len(content_a)):
        idx_a = content_a[i][0]
        idx_b = content_b[i][0]

        if idx_a == idx_b:
            content_b[i][0] = content_a[i][1]
            i += 1
            
    new_file = open(path + 'C.txt', 'w')
    
    for j in range(len(content_b)):
        new_file.write(' '.join(content_b[j])+'\n')
        
    new_file.close()
非常感谢
  • 打赏
  • 举报
回复
就当做是做题了




path = 'C:/Users/Administrator/Desktop/'
file_a = path + 'A.txt'
file_b = path + 'B.txt'
with open(file_a) as a, open(file_b) as b:
lines_a = a.readlines()
lines_b = b.readlines()
content_a =[line_a.split() for line_a in lines_a]
content_b =[line_b.split() for line_b in lines_b]
i = 0
while i in range(len(content_a)):
idx_a = content_a[i][0]
idx_b = content_b[i][0]

if idx_a == idx_b:
content_b[i][0] = content_a[i][1]
i += 1

new_file = open(path + 'C.txt', 'w')

for j in range(len(content_b)):
new_file.write(' '.join(content_b[j])+'\n')

new_file.close()
生信程序猿 2019-05-16
  • 打赏
  • 举报
回复
对的,是这样的,麻烦了
一笑程序猴 2019-05-10
  • 打赏
  • 举报
回复
最终效果是啥样的,详细描述下
新文件:
B C D
B C D
B1 C1 D1
是这样的吗

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧