迭代字符串时如何统一单独的数字

我试图遍历字符串并获取所有数字,以便可以将它们添加到列表中,这是我完成另一项任务所需要的。我有多个递归地引用彼此的函数,并且原始输入是数据列表。问题是,当我打印字符串时,我得到正确的输出,但是如果我遍历字符串并打印所有索引,我将得到单独的数字,所以1,1而不是11或9,3而不是93。这个问题的简单解决方案?我没有相当的编程经验,因此这似乎是一个简单的任务,但目前无法确定。这是我的问题部分代码。

numbers = names.split('\t')[1].split(' ')[1]
print numbers

一些输出:

8
44
46
86

现在是否使用以下代码:

numbers = names.split('\t')[1].split(' ')[1]
for i in numbers:
    print i

我得到以下输出:

8
4
4
4
6
8
6

或当我转换为列表时:

numbers = names.split('\t')[1].split(' ')[1]
print list(numbers)

输出:

['8']
['4','4']
['4','6']
['8','6']

输入names的结构如下:Andy Gray\t 2807 53 我还有很多名字,但是它们的结构都是这样的。

然后我用\t拆分以删除名称,然后再次用' '拆分以获取数字。然后,我有2个数字,并使用第二个索引来获取所需的数字,这是名称旁边的第二个数字。

我目前唯一的目标是获得“完整”数字,因此输出就像我打印时一样。我需要能够以整数形式获取这些数字的列表,其中每个索引都是完整的数字,因此[8,44,46,86]等。然后,我可以遍历这些数字并使用它们。一旦我能够做到,我就知道该怎么做,但目前我仍停留在这一点上。任何帮助都很好。

链接到我正在使用的完整输入和python代码,以防事情变得更加清晰:

Demo

li512110 回答:迭代字符串时如何统一单独的数字

如果您知道所有输入的结构都相同,并且可以保证字符串以您感兴趣的两位数字结尾,那么为什么不执行以下操作?

names_list = ['Andy gray\t2807 53','name surname\t2807 934']

for n in names_list:
  print (n[-2:])

另一方面,如果您不确定最后一个数字仅包含2位数字,则无需在标签上进行所有拆分:

import re
names_list = ['Andy gray\t2807 53','name surname\t2807 94']

for n in names_list:
  try:
    if re.compile(r'.*\d+$').match(n) and ' ' in n:
      print(n.split()[-1])
  except:
    pass

,

str.rsplit()

类似于str.split(),但从右端开始。

s = "Andy Gray\t 2807 53"

_,number = s.rsplit(maxsplit=1)
print(number)
, 读取OP添加的代码后,

EDIT

  

代码看起来不错,但是问题是我的输入(名称)不是字符串列表。我有这样的字符串:Guillaume van Steen 5855 5 Sven Silvis Cividjian 1539 88 Jan Willem Swarttouw 3911 66,它走得更远。这就是为什么我在制表符和空格处分开以获取最终数字的原因。

也许此代码有帮助:

from pathlib import Path

file = Path('text.txt')
text = file.read_text()

在这里将文件分成几行:

lines = text.split('\n')

因此可以在稍加检查的情况下使用该功能

def get_numbers(list_of_strings):
        numbers = list()
        for string in list_of_strings:
            # here check if the line has a "\t" so asume is a valid line
            if '\t' in string:
                numbers.append(int(string.split()[-1]))
        return numbers

numbers = get_numbers(lines)
print(numbers)
,

您可以再次用空格分隔字符串,并将每个值转换为int。 例如,

numbers = names.split('\t')[1].split(' ')[1]
list_numbers = [int(x) for x in numbers.split(' ')]

然后您将获得“完整”数字列表

本文链接:https://www.f2er.com/3091127.html

大家都在问