解决方案:好的我最后使用了以下内容。它涉及正则表达式。这就是我想要的。
matches = re.findall(r'My favorite chili was number \d+"', line) # gets 1 match
if matches: # if there are matches
nums.append(int(re.findall(r'\d+',matches[0])[0])) # append the number
这不是很优雅,但它非常强大。它总是根据我正在使用的文件的格式工作。感谢@ The2ndSon建议使用正则表达式。这就是我曾经模糊地听过的,并且不太记得。
在Python中,我说我正在打开一个文件。在这个文件中有一些我想要的字符串。这些字符串的格式为
"My favorite chili was chili number NUM"
其中NUM
被自然数(非负整数)替换。
查找包含此字符串的行的最佳方法是什么,并存储NUM
?我有一些代码,但似乎应该有一个更优雅的解决方案。是否有专门为此目的制作的内置插件?它似乎与Python内置的其他字符串格式化内容非常相似。
我正在使用Python 2.7
到目前为止,这是我的代码:
nums = []
with open('file.txt', 'r') as txtfile:
for line in txtfile:
indx = line.find('My favorite chili was number ')
if indx != -1:
nums.append(int(line[indx+30:indx+31]))
重要编辑:每行可以有多个号码,我想要的号码并不总是在最后。整个辣椒只是一个例子。
答案 0 :(得分:2)
您可以使用正则表达式从字符串中提取数字。
>>>import re
>>>re.findall(r'\d+', "My favorite chili was chili number 19")
['19']
答案 1 :(得分:1)
假设数字始终在最后,您可以这样做:
test = "My favorite chili was chili number 123456"
num = int(test.split()[-1])
print(num)