Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何使用python水平反转ctl文件中的文本数据并将其保存在新文件中?_Linux_Python 2.7_Python 3.x - Fatal编程技术网

Linux 如何使用python水平反转ctl文件中的文本数据并将其保存在新文件中?

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 ....................... ....................

**我有一个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

////////////代码/////////////////////

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行以上得到相同的结果吗?