5 回答
TA貢獻1848條經驗 獲得超10個贊
您可以在排序之前使用切片來獲取前 13 個條目:states
infile = open("States.txt", 'r')
states = [line.rstrip() for line in infile]
original_states = states[:13]
original_states.sort()
for state in original_states:
print(state)
infile.close()
TA貢獻1841條經驗 獲得超3個贊
在對文件進行排序之前,您可以使用它itertools.islice來讀取文件的前 13 行:
from itertools import islice
with open('States.txt') as infile:
print(*sorted(islice(infile, 13)), sep='')
TA貢獻1798條經驗 獲得超3個贊
這是我對 stackoverflow 的第一個貢獻,所以請放輕松。我想更多地參與并回饋社會,因為這個社區給了我很大的幫助。
有人可能可以更簡化這一點,但這是我的解決方案:
filename="States.txt"
states= list()
with open (filename) as file:
# convert to list of names
items = list(file.read().split())
從文件中生成州名列表。因為文件包含空格分隔的名稱,您需要將一些名稱放在一起:例如紐約
two_word_state_names=['New','North','South','West', 'Rhode']
skip=False
for idx,item in enumerate(items):
if skip:
skip=False
continue
elif item in two_word_state_names:
states.append(str(items[idx] + " " + items[idx+1]))
skip=True # skip the next loop because next item is the second word of the state
else:
states.append(item)
現在您可以排序并打印前十三個:
thirteen_states=states[:13]
thirteen_states.sort()
# Print result
for state in thirteen_states:
print (state)
康涅狄格
特拉華州
喬治亞州
馬里蘭
馬薩諸塞州
新罕布什爾
新澤西州
紐約
北卡羅來納
賓夕法尼亞州
羅德島
南卡羅來納
弗吉尼亞
TA貢獻1830條經驗 獲得超9個贊
您的原始問題將狀態作為空格分隔的單詞,這需要額外的邏輯來提取和表示兩個單詞的狀態。使用您編輯的問題,它要簡單得多:
with open ('States.txt') as file:
states = list(file.read().split('\n')[:13])
states.sort()
for state in states:
print (state)
Connecticut
Delaware
Georgia
Maryland
Massachusetts
New Hampshire
New Jersey
New York
North Carolina
Pennsylvania
Rhode Island
South Carolina
Virginia
TA貢獻1862條經驗 獲得超6個贊
因此,如果第一個列表包含 50 個狀態,并且您應該按排序順序輸出其中的 13 個,我想您可以創建一個包含 13 個關鍵狀態的列表,并且在您的 for 循環中,您可以檢查一個狀態是否是其中之一,而且只有當真打印呢?
添加回答
舉報
