![](/img/trans.png)
[英]Printing lines from file using python returning value in column, not by row
[英]Python printing lines from a file
稱呼,我試圖寫一個函數,逐行打印文本文件中的數據。 輸出需要具有行號,后跟冒號和空格。 我想出了以下代碼;
def print_numbered_lines(filename):
"""Function to print numbered lines from a list"""
data = open(filename)
line_number = 1
for line in data:
print(str(line_number)+": "+line, end=' ')
line_number += 1
問題是,當我使用創建的測試文本文件運行此功能時,第一行與輸出中的其余各行不在同一縮進級別。 輸出看起來像是1: 9874234,12.5,23.0,50.0 2: 7840231,70,60,85.4 3: 3845913,55.5,60.5,80.0 4: 3849511,20,60,50
我哪里出錯了? 謝謝
將end
參數的值替換為空字符串而不是空格。 由於end
參數是一個空格,因此它將在每行之后打印一個空格。 因此后面的行在行的開頭有一個空格。
def print_numbered_lines(filename):
"""Function to print numbered lines from a list"""
data = open(filename)
line_number = 1
for line in data:
print(str(line_number) + ": " + line, end='')
line_number += 1
執行此操作的另一種方法是strip
新行並打印,而無需將任何值傳遞給end
參數。 這將刪除\\n
它具有在所述線的端部和一個新的線將被打印為end="\\n"
默認。
def print_numbered_lines(filename):
"""Function to print numbered lines from a list"""
data = open(filename)
line_number = 1
for line in data:
print(str(line_number) + ": " + line.strip("\n"))
line_number += 1
您將end
參數指定為空格。 因此,在第一行之后,每個都有額外的空間。
您從文件中讀取的行看起來像這樣:
'9874234,12.5,23.0,50.0\n'
看結尾。 發生行翻譯是由於原始行。
因此,要獲得所需的內容,只需將print的end
參數更改為空字符串(而不是空格)
此外,我建議您更改該功能的實現,並將enumerate
用於行編號。
def print_numbered_lines(filename):
data = open(filename)
for i, line in enumerate(data):
print(str(i+1)+": "+line, end='')
這與您的打印語句有關。
print(str(line_number)+": "+line, end=' ')
您可能已經看到,在打印行時,它們之間有多余的一行,然后您嘗試使用end=' '
解決此問題。
如果要刪除“空”行,則應使用line.strip()
。 這將刪除它們。
用這個:
print(str(line_number)+": "+line.strip())
脫衣舞娘也可以爭論。 這來自文檔:
str.strip( [炭] )
返回刪除了前導和尾隨字符的字符串的副本。 chars參數是一個字符串,指定要刪除的字符集。 如果省略或為None,則chars參數默認為刪除空白 。 chars參數不是前綴或后綴; 而是刪除其值的所有組合:
那是怎么回事?
文件中的行不會被分隔成不同的行。 在Linux上,換行符用\\n
表示。 普通編輯器通過將文本下推到新行來轉換它們。
讀取文件時,Python會將這些\\n
精確地分隔開,但不會將其丟棄。 打印時,它們將被重新解釋並與換行符結合使用,然后print
將增加一個換行符“太多”。
在end
在你的打印語句的參數只是改變什么print
打印線后會用。 默認值為\\n
。
檢查使用end=" !"
:
1: aaa
!2: bbb
!3: ccc
您會在\\n
aaa引起換行符之后看到\\n
,該換行符是字符串的一部分,並且在打印后添加end
的內容。 因此它增加了一個!
。 下一行打印在同一行中,因為在打印之前沒有其他換行符會導致換行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.