大家晚上好,我是 9 歲的 David tzu,我真的需要幫助來解決這個關于正確對齊單詞的問題,我只嘗試了列印,但它不太適合。
sample.txt 包括:
David Tzu January 13, 2012 FriedChicken
Mama March 15, 1980 Sphagetti
Papa June 27, 1981 Burger
這是我的代碼:
file = open("sample.txt", "r")
line_count = 1
for line in file:
if line != "\n":
line_count = 1
file.close()
with open("sample.txt") as fi:
print("")
for x in range(1,line_count):
print(x, fi.readline().replace("\n", ""))
print("")
上面代碼的當前結果是這樣的:
1 David Tzu January 13, 2012 FriedChicken
2 Mama March 15, 1980 Sphagetti
3 Papa June 27, 1981 Burger
預期結果:
Name Birthday Favorite Food
1 David Tzu January 13, 2012 FriedChicken
2 Mama March 15, 1980 Sphagetti
3 Papa June 27, 1981 Burger
我真的很抱歉我糟糕的英語,希望你們都明白我想表達的意思。
附加代碼:#Len of words
file = open("sample.txt", "r")
line_count = 1
for line in file:
if line != "\n":
line_count = 1
file.close()
with open("sample.txt") as fi:
print("")
for x in range(1,line_count):
print(x, fi.readline().replace("\n", ""))
print("")
file = open("Sample.txt", "rt")
data = file.readline()
words = data.split()
print(len(words))
uj5u.com熱心網友回復:
我不知道我是否理解你的問題。
對于您的示例,您似乎只需要添加具有正確空格數的第一行
print(' Name Birthday Favorite Food')
最小的作業示例。
我io
只用來模擬記憶體中的檔案,所以每個人都可以簡單地復制和測驗它。
text = '''David Tzu January 13, 2012 FriedChicken
Mama March 15, 1980 Sphagetti
Papa June 27, 1981 Burger'''
import io
#fh = open("sample.txt")
fh = io.StringIO(text)
print(' Name Birthday Favorite Food')
line_count = 0
for line in fh:
line = line.strip()
if line:
line_count = 1
print(f"{line_count:3} {line}")
結果:
Name Birthday Favorite Food
1 David Tzu January 13, 2012 FriedChicken
2 Mama March 15, 1980 Sphagetti
3 Papa June 27, 1981 Burger
如果您的行數超過 999,那么您可能需要更大的數字 {line_count:3}
和更多的空格Name
您必須只使用fh = open()
, fh.write(line '\n')
,fh.close()
而不是print()
將其保存在檔案中。或者你可以打開 useprint(..., file=fh)
而不是write()
如果您不知道列有多長,那么您可能需要讀取所有行,拆分為列,然后獲取列len()
中的每個值并獲取max(all_lenght_in_column)
每一列 - 稍后您可以將此值與string formatting
like 一起使用{variable:lenght}
。但它可能需要regex
在2 or more spaces
( \s{2,}
)上拆分列。所以這一切要復雜得多。
最終你可以嘗試使用pandas
和read_csv
與分隔符\s{2,}
text = '''David Tzu January 13, 2012 FriedChicken
Mama March 15, 1980 Sphagetti
Papa June 27, 1981 Burger'''
import pandas as pd
import io
#fh = "sample.txt"
fh = io.StringIO(text)
df = pd.read_csv(fh, names=['Name', 'Birthday', 'Favorite Food'], sep='\s{2,}', index_col=False)
df.index = 1
print(df)
結果:
Name Birthday Favorite Food
1 David Tzu January 13, 2012 FriedChicken
2 Mama March 15, 1980 Sphagetti
3 Papa June 27, 1981 Burger
您可以將其作為df.to_string()
并保存在普通文本檔案中。
with open('output.txt', 'w') as fh:
fh.write(df.to_string())
uj5u.com熱心網友回復:
如果您知道檔案中的列之間的空間是制表符空間,則可以這樣做。
with open("sample.txt") as ftr:
line_number = 1
print("\tName \tBirthday \tFavorite food")
for line in ftr.readlines():
print("%s \t%s" % (line_number, line))
line_number = 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/382507.html