Linux 如何使用python水平反转ctl文件中的文本数据并将其保存在新文件中?
**我有一个ctl文件,由如下所示的文本组成 mycnf_001/mycnf_001_001 mycnf_001/mycnf_001_002 ....................... ....................... (一个很长的列表由1000行组成) 我正在努力,但我不能得到我想要的格式 mycnf_001 mycnf_001 mycnf\U 001\U 002 mycnf\U 001 ....................... ....................... (一个很长的列表由1000行组成) *********详细问题描述*************************** 当前格式mycnf_001/mycnf_001_001 需要从mycnf_001 mycnf_001 ////////////代码/////////////////////Linux 如何使用python水平反转ctl文件中的文本数据并将其保存在新文件中?,linux,python-2.7,python-3.x,Linux,Python 2.7,Python 3.x,**我有一个ctl文件,由如下所示的文本组成 mycnf_001/mycnf_001_001 mycnf_001/mycnf_001_002 ....................... ....................... (一个很长的列表由1000行组成) 我正在努力,但我不能得到我想要的格式 mycnf_001 mycnf_001 mycnf\U 001\U 002 mycnf\U 001 ....................... ....................
f = open("ms.ctl", "rb")
s = f.readlines()
f.close()
f = open("newms.ctl", "wb")
s.reverse()
for item in s:
print>>f, item
f.close()
当我执行上面的代码时,它只是将顺序从下到上颠倒过来,我需要的东西在上面已经清楚地提到了。让我们假设在阅读文件“ms.ctl”后,您有如下值
s="mycnf_001/mycnf_001_001/mycnf_001_002"
现在根据“/”拆分字符串
spliteds = [x for x in s.split('/') if x.strip()]
现在有了字符串数组。现在尝试访问数组并从上一个开始,将其保存在另一个字符串中
desireds=""
for i in reversed(spliteds):
desireds = desireds + i + " "
现在您可以将此字符串放入任何文件中
代码:
f = open("ms.ctl", "rb")
s = f.read()
f.close()
N = s.split('\n')
f = open("newms.ctl", "wb")
spliteds = [ x for x in N[0].split('/') if x.strip()]
desireds=""
for i in reversed(spliteds):
desireds = desireds + i + " "
#print desireds
f.write(desireds)
f.close()
可以使用print调试此代码。希望能有帮助
更新
如果要运行多行。
f = open("ms.ctl", "rb")
s = f.read()
f.close()
N = s.split('\n')
lenth = len(N)
f = open("newms.ctl", "wb")
for x in range(0, lenth):
print "We're on time %d" % (x)
spliteds = [ x for x in N[0].split('/') if x.strip()]
desireds=""
for i in reversed(spliteds):
desireds = desireds + i + " "
#print desireds
f.write(desireds)
f.close()
如果希望在一列中获得输出。
f = open("ms.ctl", "rb")
s = f.read()
f.close()
N = s.split('\n')
lenth = len(N)
f = open("newms.ctl", "wb")
for x in range(0, lenth):
print "We're on time %d" % (x)
spliteds = [ x for x in N[0].split('/') if x.strip()]
desireds=""
for i in reversed(spliteds):
desireds = desireds + i + " "
#print desireds
f.write(desireds)
f.close()
在上面的代码中,只需在desireds=desireds+i+“
Stp-1当前格式mycnf_001/mycnf_001_001 Stp-2只需将txt数据的ref扭转为斜杠(/)mycnf_001_001/mycnf_001 Stp-3和然后在b/w文本中删除(/)make spc。mycnf_001_001 mycnf_001谢谢您的回答,但请写出完整的函数。不知何故,ms.ctl的当前格式是s=mycnf_001/mycnf_001_001,所需格式是mycnf_001_001 mycnf_001(表示所需格式由mycnf_001_001; onespacemycnf_001组成),实际上它的发音ID后跟说话人IDI添加了代码。希望能有帮助。如果您看到任何问题,请告诉我们。谢谢,但如果可能的话,我还需要一次更新,我在ms.ctl文件中有数百种当前格式,所有格式都是列表格式。当前代码只提供一个输出,因为它只针对一行编写,如何以列表格式寻址当前行,然后以列表格式(也以单列形式)获取输出(所需格式),然后将输出保存在newms.ctl文件中。谢谢,如果不清楚,我可以再详细解释一遍。你想在1行以上得到相同的结果吗?