我已经绞尽脑汁了几天。我是Python的新手,试图弄清楚如何分割字符串并将所需的内容输出到列表中。我正在尝试从字符串中选择一个整数(无论数字中的位数),并将其存储在变量中以备将来使用。我的字符串列表如下所示:
["<foo>1</foo>", "<foo>2</foo>", "<foo>3</foo>", "<foo>4</foo>", "<foo>5</foo>", "<foo>6</foo>", "<foo>7</foo>", "<foo>8</foo>", "<foo>9</foo>", "<foo>10</foo>"]
我对for循环和python的基本概念非常熟悉,但是不确定我是否咬得太多了。
编辑:我的脚本中已经有该列表。挑战在于删除数字周围的字符,仅将数字保留在列表中。
答案 0 :(得分:1)
Python的list()
函数会将任何字符串转换为列表。另外,在字符串上执行for
循环时,它将循环访问每个字符。因此,由于您想要的是一个列表,其中的项是<foo> </foo>
,包围字符串中的每个数字:
>>> n = 1234567
>>> L = [ ('<foo>%s</foo>' % i) for i in list(str(n)) ]
>>> print(L)
['<foo>1</foo>', '<foo>2</foo>', '<foo>3</foo>', '<foo>4</foo>', '<foo>5</foo>', '<foo>6</foo>', '<foo>7</foo>']
答案 1 :(得分:0)
我想,您可以以此作为输入(如果我理解正确的话):
a = ["<foo>1</foo>", "<foo>2</foo>", "<foo>3</foo>", "<foo>4</foo>", "<foo>5</foo>", "<foo>6</foo>", "<foo>7</foo>", "<foo>8</foo>", "<foo>9</foo>", "<foo>10</foo>"]
在字符串中查找内容的最简单方法是使用正则表达式。 Python为此提供了re
模块。您已经知道列表理解了,这是查找所有数字的一种简便方法:
b = [int(re.search(r"\d+", element).group()) for element in a]
\d+
搜索一个或多个(+
)位(\d
)。