当“$”出现时,如何打印所有实例?

2024-04-19 15:15:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个字符串,我基本上是想在“$”出现后得到数字。例如,我希望输出如下:

>>> 100, 654, 123, 111.654

变量和字符串:

file = """| $100 on the first line
          | $654 on the second line
          | $123 on the third line
          | $111.654 on the fourth line"""

现在,我有了一些代码,我认为这些代码可以帮助我区分数字。但我不明白为什么它只分开第四行。它只打印出111.654

txt = io.StringIO(file).getvalue()
idx = txt.rfind('$')

print(txt[idx+1:].split()[0])

有更简单的方法吗?还是我忘了什么


Tags: the字符串代码iotxtonline数字
3条回答

您的代码只找到最后一个$,因为这正是您编程它要做的。 获取整个输入,找到最后一个$,然后拆分字符串的其余部分。这会特别忽略输入中的任何其他$

你引用“行”就好像它是你程序的一个单元,但是你没有做任何事情来迭代行。我建议您停止玩弄io,只需使用标准的file操作。您可以在任何关于Python文件的教程中找到这一点

同时,以下是您如何处理您的输入:

by_lines = txt.split('\n')    # Split in newline characters
for line in by_lines:
    idx = line.rfind('$')
    print(line[idx+1:].split()[0])

输出:

100
654
123
111.654

这能让你动起来吗

这应该够了!对于txt中的每个字符:如果是“$”,则继续,直到找到一个空格

print(*[txt[i+1: i + txt[i:].find(' ')] for i in range(0, len(txt)) if txt[i]=='$'])

输出:

100 654 123 111.654

正则表达式yay:

import re

matches = re.findall(r'\$(\d+\.\d+|\d+)', file)

查找所有整数和浮点数,确保不会错误捕获尾随的“.”句点

相关问题 更多 >