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 循环中,您可以检查一个状态是否是其中之一,而且只有当真打印呢?
添加回答
举报