gpt4 book ai didi

python - 在Python中将字符串转换为int,只有没有字符的数字

转载 作者:太空宇宙 更新时间:2023-11-04 10:29:05 25 4
gpt4 key购买 nike

我是 Python 的初学者,我找不到问题的答案。我有一个包含一些数据的文件,我想从这个文件中获取数字。我的程序如下所示:

class Mojaklasa:
def przenumeruj_pdb(self):
nazwa=raw_input('Podaj nazwe pliku: ')
plik=open(nazwa).readlines()
write=open('out.txt','w')
for i in plik:
j=i.split()
if len(j)>5:
if j[0] == "ATOM":
write.write(j[5])
write.write("\n")
zapis.close()

文件中的第 5 个字段有一些从 -19 到 100 的数字,它工作得很好。但有时第 5 个字段的数字带有字母 f.e. 28A,只想要 28。转换为 int 不起作用。我该怎么做?

最佳答案

str.translate 将删除任何字母:

s = "10A"
from string import ascii_letters
print(int(s.translate(None,ascii_letters)))
10

或者使用 re:

import re
print(int(re.findall("\-?\d+",s))[0])
10
In [22]: s = "-100A"
In [23]: int(re.findall("\-?\d+",s)[0])
Out[23]: -100

In [24]: int(s.translate(None,ascii_letters))
Out[24]: -100

我也会稍微更改一下您的代码:

class Mojaklasa: # unless there are more methods I would not use a class 
def przenumeruj_pdb(self):
nazwa = raw_input('Podaj nazwe pliku: ')
with open(nazwa) as plik, open("out.txt", "w") as write: # with will close your iles
for line in plik: # iterate over file object
j = line.split()
if len(j) > 5 and j[0] == "ATOM": # same as nested if's
write.write("{}\n".format(j[5].translate(None, ascii_letters)))

关于python - 在Python中将字符串转换为int,只有没有字符的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27953969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com