gpt4 book ai didi

python - 在python中使用Sed通过subprocess.call进行文件替换

转载 作者:行者123 更新时间:2023-12-01 05:15:44 27 4
gpt4 key购买 nike

我想将一个文件中的一列替换为另一个文件中的一列。我正在尝试使用 sed 在 python 中执行此操作,但我不确定我是否正确执行。也许代码会让事情变得更清楚:

 20 for line in infile1.readlines()[1:]:
21 element = re.split("\t", line)
22 IID.append(element[1])
23 FID.append(element[0])
24
25 os.chdir(binary_dir)
26
27 for files in os.walk(binary_dir):
28 for file in files:
29 for name in file:
30 if name.endswith(".fam"):
31 infile2 = open(name, 'r+')
32
33 for line in infile2.readlines():
34 parts = re.split(" ", line)
35 Part1.append(parts[0])
36 Part2.append(parts[1])
37
38 for i in range(len(Part2)):
39 if Part2[i] in IID:
40 regex = '"s/\.*' + Part2[i] + '/' + Part1[i] + ' ' + Part2[i] + '/"' + ' ' + phenotype
41 print regex
42 subprocess.call(["sed", "-i.orig", regex], shell=True)

这就是打印正则表达式的作用。系统似乎在 sed 进程期间挂起,因为它在那里停留了相当长的时间而不执行任何操作。

"s/\.*131006/201335658-01 131006/" /Users/user1/Desktop/phenotypes2

感谢您的帮助,如果您需要进一步说明,请告诉我!

最佳答案

如果您有 Python 和 re 模块,则不需要 sed。下面是如何使用 re 替换字符串中给定模式的示例。

>>> import re
>>> line = "abc def ghi"
>>> new_line = re.sub("abc", "123", line)
>>> new_line
'123 def ghi'
>>>

当然,这只是在 Python 中实现此目的的一种方法。我觉得 str.replace() 对你来说也能完成这项工作。

关于python - 在python中使用Sed通过subprocess.call进行文件替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23274325/

27 4 0
文章推荐: javascript - jquery:在 mouseenter 上删除堆叠在另一个
之上的