【问题标题】:How do I print a blank line whenever the first letter of the state differs from the previous state's first letter [closed]每当状态的第一个字母与前一个状态的第一个字母不同时,我如何打印一个空行[关闭]
【发布时间】:2016-02-09 14:00:02
【问题描述】:

我得到一个状态列表作为.txt 文件。我能够读取每一行,剥离换行符并将数据附加到states_list,但是当当前状态的第一个字母与前一个状态的第一个字母不同时,我还需要打印一个空行。

这是我尝试过的:

states_list = []
n = 0

with open('states.txt', 'r') as f:
    for line in f:
        state = line.strip('\n')
        states_list.append(state)

for each in states_list:
    if states_list[n][0] != states_list[n+1][0]:
        print("\n")
    print(each)

【问题讨论】:

  • 这里没有问题...
  • OP 今天注册了,这是 OP 的第一篇文章。为什么这么多反对票???
  • 为什么要投反对票?因为这是一个没有实际问题的代码转储。这样的“问题”表明没有研究工作,既不清晰也不有用,它描述了否决的标准。
  • 在问他/她的问题之前,OP 显然没有阅读“How do I ask a good question?”。

标签: python


【解决方案1】:

如果需要与其他成员进行比较,请不要使用 for-each 循环。

for i in range(len(states_list)):
     if i > 0:
         if states_list[i][0] != states_list[i-1][0]:
             print('\n')
     print(states_list[i])

【讨论】:

  • 使用这种方法,第一个元素不会被打印出来。
  • 很好,现在修复了。
【解决方案2】:

另一种解决方法是使用zip()

with open('states.txt', 'r') as f:
    states = [line.strip('\n') for line in f]

for a, b in zip(states, states[1:]):
    if a[0] != b[0]:
        print("\n")
    print(a)
print(states[-1])

最后,它产生了与 jeff carey 的答案相同的结果,但可能是以更 Pythonic/优雅的方式。

【讨论】:

  • 谢谢!我也是第一次了解 zip()!
猜你喜欢
  • 2022-08-23
  • 1970-01-01
  • 2022-11-04
  • 1970-01-01
  • 2021-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多