我试图枚举输入文件的第二列,但代码给出了以下错误。如何修复代码以获得以下输出文件?
错误:
回溯(最近一次调用最后一次):文件“/rename_atoms.py”,第7行,打印(项目索引)类型错误:无法连接“str”和“int”对象
我的代码:
#!/usr/bin/python
with open ('input.gro', 'r') as f:
for line in f:
column=line.split()
for index, item in enumerate(column[1]):
print(item+index)
输入文件:
GRoups of Organic Molecules in ACtion for Science
18
1LIG O 1 1.665 1.740 8.646
1LIG O 2 0.877 2.044 7.947
1LIG S 3 1.469 1.778 8.501
1LIG S 4 1.340 1.695 8.487
1LIG S 5 1.231 1.770 8.412
1LIG N 6 1.282 1.801 8.268
1LIG C 7 1.553 1.679 8.585
1LIG C 8 1.523 1.805 8.360
1LIG C 9 1.313 1.647 8.630
1LIG H 10 1.418 1.875 8.271
1LIG H 11 1.454 1.624 8.688
1LIG H 12 1.100 1.691 8.403
1LIG H 13 1.453 1.912 8.577
1LIG H 14 1.174 1.869 8.184
1LIG H 15 0.992 1.777 8.339
1LIG H 16 1.037 1.853 8.217
1LIG H 17 1.206 1.941 8.068
1LIG H 18 0.939 1.914 8.137
0.00000 0.00000 0.00000
所需输出文件:
GRoups of Organic Molecules in ACtion for Science
18
1LIG O1 1 1.665 1.740 8.646
1LIG O2 2 0.877 2.044 7.947
1LIG S1 3 1.469 1.778 8.501
1LIG S2 4 1.340 1.695 8.487
1LIG S3 5 1.231 1.770 8.412
1LIG N1 6 1.282 1.801 8.268
1LIG C1 7 1.553 1.679 8.585
1LIG C2 8 1.523 1.805 8.360
1LIG C3 9 1.313 1.647 8.630
1LIG H1 10 1.418 1.875 8.271
1LIG H2 11 1.454 1.624 8.688
1LIG H3 12 1.100 1.691 8.403
1LIG H4 13 1.453 1.912 8.577
1LIG H5 14 1.174 1.869 8.184
1LIG H6 15 0.992 1.777 8.339
1LIG H7 16 1.037 1.853 8.217
1LIG H8 17 1.206 1.941 8.068
1LIG H9 18 0.939 1.914 8.137
0.00000 0.00000 0.00000
不能连接 int 和字符串。它们是函数的不兼容类型。您需要将索引从 int 转换为字符串,然后连接它们。在第 7 行中,尝试:
print(item+str(index))
问题出在这一行:
for index, item in enumerate(column[1]):
>> print(item+index)
您正在尝试添加一个整数(索引
)和一个字符串(item
)。如果您只想将它们打印在一起,只需执行以下操作:
print(item, index)
请注意,默认情况下,这将在参数之间添加一个空格。要删除它,请使用< code>sep参数,并将其设置为空字符串。
然而,这可能不是您想要的,因为输出可能是这样的:
O 0
O 0
S 0
...等等。
因此,请执行以下操作:
for i, l in enumerate(f):
column = l.split()
print(column[1],i,sep='')
这将是这样的:
O0
O1
S2
...等等。
快到了。为了获得期望的输出,我们需要维护每个元素的计数。所以,试着这样做:
from collections import defaultdict
counts = defaultdict(int)
for l in f:
column = l.split()
counts[column[1]] += 1
print(column[1], counts[column[1]], sep="")
这应该打印:
O1
O2
S1
...等等。
问题内容: 例如,我该怎么做: 结果示例: 问题答案: 迅捷4.2+ 从Swift 4.2(使用Xcode 10)开始,只需添加协议一致性即可从中受益。要添加此协议一致性,您只需要在某处写: 如果枚举是您自己的,则可以直接在声明中指定一致性: 然后,以下代码将打印所有可能的值: 与早期Swift版本(3.x和4.x)的兼容性 如果您需要支持Swift 3.x或4.0,则可以通过添加以下代码来模仿S
我目前正在开发一个解析器。我走在一棵树上,大部分是决定论的(我能找到的数值有限)。 通常在这些情况下,我会创建一个枚举,其中包含我希望找到的值的名称,如下所示: 在这种情况下,我可以通过以下方式检查字符串是否属于枚举: 问题是目前我和特殊角色一起工作({" 我想要的是将枚举与那些特殊的字符元素相关联,例如 并继续使用以下简单明了的方法: 目前,我在任何地方都使用枚举,但对于这些元素,我使用表。我想
例如,我如何做类似的事情: 结果示例:
问题内容: 我想知道在Java中是否可以嵌套枚举。 在这里,我想做的是: 拥有一个由CAT和DOG组成的物种,将允许我访问可用CAT和DOG品种的子枚举。例如,我希望能够测试是否装有CAT或DOG,以及动物是否是PERSAN CAT或PITBULL狗。CAT和DOG品种必须是不同的枚举,即CatBreeds枚举和DogBreeds枚举。 这是我要使用的访问模式的示例: 种类: 物种 种狗 品种:
问题内容: 这不是卡住我的问题,而是我正在寻找一种编写代码的整洁方法。 本质上,我正在编写一个事件驱动的应用程序。用户触发一个事件,该事件被发送到适当的对象,然后这些对象处理事件。现在,我正在编写偶数处理程序方法,并且希望使用switch语句确定如何处理事件。现在,在我研究通用结构时,事件类非常简单: 然后,在另一堂课中,我会看到类似以下内容的内容: 我会 喜欢 做的就是这样的事情(尽管我当然会坚
是否可以使用枚举来定义键?(映射返回int String、Object。但这不是问题的一部分) 谢谢你的帮助。