Python:使用换行符添加列表

时间:2016-08-25 22:24:26

标签: python

在下面的代码中,我通过在for循环中追加来更新包含两个项目的列表。我需要在追加每个字符串后添加换行符,但我似乎无法做到。

我以为会是:

  function saveTextAsFile()
    {      
        var textToWrite = document.getElementById("json_polyline").value;

        var textFileAsBlob = new Blob([textToWrite], {type:'text/plain'});
        var fileNameToSaveAs =  "archivo.txt";

        var downloadLink = document.createElement("a");

        downloadLink.download = fileNameToSaveAs;

        downloadLink.innerHTML = "My Hidden Link";

        window.URL = window.URL || window.webkitURL;

        downloadLink.href = window.URL.createObjectURL(textFileAsBlob);

        downloadLink.onclick = destroyClickedElement;
        downloadLink.style.display = "none";
        document.body.appendChild(downloadLink);

        downloadLink.click();
    }

    function destroyClickedElement(event)
    {
        document.body.removeChild(event.target);
    }

但这只会将'\ n'添加为字符串。我也尝试了相同的,没有引号,但没有运气。

我得到了这个:

lines = []
for i in range(10):

    line = ser.readline()
    if line:
        lines.append(line + '\n')             #'\n' newline 
        lines.append(datetime.now())

但我想要这个:

['leftRaw; 928090;   0;  0.00;  0.00;  0.00;  0.00;  0.00;  0.00;      0.00;  0.00;\n', datetime.datetime(2016, 8, 25, 23, 48, 4, 517000), '\r\x00rightRaw; 928090;   0;  0.00;  0.00;  0.00;  0.00;  0.00;  0.00;  0.00;  0.00;\n', datetime.datetime(2016, 8, 25, 23, 48, 4, 519000), '\r\x00leftRaw; 928091;   0;  0.00;  0.00;  0.00;  0.00;  0.00;  0.00)]

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

我通过使用'strftime'方法在每个帧上将'datetime.now'附加到列表中来解决问题。然后,我可以使用'lines ='\ n'.join(lines)'添加换行符。请参阅下面的代码了解工作代码。

lines = []
for frame in range(frames):
    line = ser.readline()
    if line:
        lines.append(line)
        lines.append(datetime.now().strftime('%H:%M:%S'))

lines = '\n'.join(lines)

dataFile.write('%s'%(lines))

这为我提供了新行上每个列表项的所需输出,例如

['leftRaw; 928090;   0;  0.00;  0.00;  0.00;  0.00;  0.00;  0.00;  0.00;  0.00;\n', 
datetime.datetime(2016, 8, 25, 23, 48, 4, 517000), 
'\r\x00rightRaw; 928090;   0;  0.00;  0.00;  0.00;  0.00;  0.00;  0.00;  0.00;  0.00;\n', 
datetime.datetime(2016, 8, 25, 23, 48, 4, 519000)']

答案 1 :(得分:1)

您可以将所有项目添加到列表中,然后使用.join()函数在列表中的每个项目之间添加新行:

for i in range(10):
    line = ser.readline()
    if line:
        lines.append(line)
        lines.append(datetime.now())
final_string = '\n'.join(lines)

答案 2 :(得分:0)

lines列表看起来很简单。您看到的\n仅打印为指示实际上有新行。看到这个较小的例子:

In [18]: print ['asdf' + '\n\n'] + [datetime.now()],
['asdf\n\n', datetime.datetime(2016, 8, 25, 15, 32, 5, 955895)]
In [19]: a = ['asdf' + '\n\n', datetime.now()]
In [20]: print a[0]
asdf

In [21]: print a
['asdf\n\n', datetime.datetime(2016, 8, 25, 15, 37, 14, 330440)]

In [22]: