大学计算机科学:将整数值从字符串中解析为列表

用户名

我目前正在研究一个问题,该问题会遍历任何字符串,并根据某些给定规则将特定数字解析为新列表。

示例字符串:

'800!)176^b006$(46$*#63Z*16$*06$z5^'

预期产量:

[ 800, 600, 64, 63, 61, 60]

解析数字的规则为:

  1. 数字是非负整数,例如123

  2. 每个数字的第一个字符始终是一个数字。

  3. 如果$字符在数字后立即出现,则其数字倒退。211$112也是如此

  4. 如果^在数字后立即出现一个字符,则表示该数字不存在于数据中,并且从输出中将其省略。因此,例如176^将被省略。

  5. 这些数字是由随机字符哪些不是彼此分离^$或数字。

我已经开始了问题,并找到了一些测试用例。

我的代码中存在3个核心问题:

关于规则3:我的代码可以识别$字符串中的,并将向后遍历它,这将使我的测试用例成功。但是,仅当字符串没有过去时$我不确定如何让它只对它之前的字符串执行然后继续。

关于规则4:我只是不确定如何在开始之前省略整个字符串部分^

最后一个是获取代码以根据规则执行这些操作,然后将它们正确地附加到列表中。意思是我不知道如何让它以给定字符串中的一系列子字符串的形式执行所有操作。

def parse_line(s):
    """
    Given a string s, parse the ints out of it and
    return them as a list of int values.
    >>> parse_line('12$35$')
    [21, 53]
    """
    search = 0
    lst_num = []

    if len(s) > 1:
        while True:
            start = search

            while start < len(s) and not s[start].isdigit():
                start += 1
            if start >= len(s):
                break

            end = start + 1
            while end < len(s) and s[end].isdigit():
                end += 1

            if end < len(s) and not s[end].isdigit():
                if s[end] == '$':
                    rev_case = reverse(s)
                    lst_num.append(rev_case)
                if s[end] == '^':
                    continue
                end += 1

            search = end + 1
        return lst_num
    lst_num.append(int(s))
    return lst_num

我希望代码仅以相反的顺序返回数字列表:

parse_line('12$35$')
[21, 53]

我收到失败的消息错误:

ValueError: invalid literal for int() with base 10: '53$21'
语法void支持Monica

您可以一次遍历字符串,一次遍历一个元素。如果字符是数字,则可以将其保存到临时列表中。击中非数字后,您可以根据自己的规则检查是否有特殊字符。如果字符是a$并且您在临时列表中有一个数字,请反转该数字,然后将其保存到结果中。如果字符是^,则重置您的临时列表。如果字符是其他字符,并且您的临时列表中有一个数字,则将该数字添加到结果中。

重要的是您一次只能处理一个字符而不必在字符串中来回移动。

def parse_lines(s):
    result = [] # Will be returned
    cur_num = "" # A string of the characters from the current number
    for char in s:
        if char.isdigit():
            cur_num += char
        elif char == "$" and cur_num:
            result.append(int(cur_num[::-1])) # Then reverse it
            cur_num = "" # and reset cur_num
        elif char == "^": # no need to check cur_num.. we reset it anyway.
            cur_num = "" # Then reset cur_num
        elif not char.isdigit() and cur_num:
            result.append(int(cur_num))
            cur_num = ""
    if cur_num: # Handles if a number is at the end of the input string
        result.append(int(cur_num))
    return result

test_cases = ["800!)176^b006$(46$*#63Z*16$*06$z5^", "12$35$", "", "$", "^", "5"]
for test in test_cases:
    print(f"{test}: {parse_lines(test)}")

输出:

800!)176^b006$(46$*#63Z*16$*06$z5^: [800, 600, 64, 63, 61, 60]
12$35$: [21, 53]
: []
$: []
^: []
5: [5]

注:在现实世界中,我更愿意使用regex作为splash58的回答农具非常好,但您的评论指出,这是一个任务,并且regex可能不允许的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法将字符串解析为整数值

来自分类Dev

无法将字符串解析为整数值

来自分类Dev

如何使用c ++反转句子字符串中的每个单词,例如“我喜欢计算机科学”

来自分类Dev

将字符串解析为整数

来自分类Dev

将字符串解析为整数

来自分类Dev

在Python中,如何将字符串写入远程计算机上的文件?

来自分类Dev

将字符串解析为带范围的整数列表

来自分类Dev

计算机科学中的浮点运算

来自分类Dev

Javascript将字符串解析为整数

来自分类Dev

C ++将子字符串解析为整数

来自分类Dev

Rust:无法将整数解析为字符串,ParseIntError

来自分类Dev

将整数列表显示为字符串

来自分类Dev

将命令行参数解析为字符串以在Fortran中存储整数

来自分类Dev

将JSON数组中的字符串元素解析为整数

来自分类Dev

在C#中从计算机内存中删除字符串

来自分类Dev

如何在Powershell中替换远程计算机上文件中的字符串?

来自分类Dev

计算机名和字符串搜索

来自分类Dev

将列表中的列表从字符串转换为整数

来自分类Dev

通过存储为字符串的键的整数值对字典列表进行排序

来自分类Dev

在包含计算机时间的字符串列表中获取项目

来自分类Dev

tcl:将字符串解析为列表

来自分类Dev

如何在计算机中查找包含文本字符串的文件

来自分类Dev

客户端计算机中的 Sql Server 连接字符串

来自分类Dev

laravel在本地计算机上返回json字符串,但在弹性beantalk实例上返回整数

来自分类Dev

将R中URL编码的GET字符串解析为列表

来自分类Dev

将大整数转换为pandas中的字符串(以避免科学计数法)

来自分类Dev

将列表的每个整数值转换为熊猫系列下的字符串

来自分类Dev

函数的序列表示是否真的用于计算机科学中的图形?

来自分类Dev

如何将字符串中除数字以外的字符的一部分解析为整数

Related 相关文章

  1. 1

    无法将字符串解析为整数值

  2. 2

    无法将字符串解析为整数值

  3. 3

    如何使用c ++反转句子字符串中的每个单词,例如“我喜欢计算机科学”

  4. 4

    将字符串解析为整数

  5. 5

    将字符串解析为整数

  6. 6

    在Python中,如何将字符串写入远程计算机上的文件?

  7. 7

    将字符串解析为带范围的整数列表

  8. 8

    计算机科学中的浮点运算

  9. 9

    Javascript将字符串解析为整数

  10. 10

    C ++将子字符串解析为整数

  11. 11

    Rust:无法将整数解析为字符串,ParseIntError

  12. 12

    将整数列表显示为字符串

  13. 13

    将命令行参数解析为字符串以在Fortran中存储整数

  14. 14

    将JSON数组中的字符串元素解析为整数

  15. 15

    在C#中从计算机内存中删除字符串

  16. 16

    如何在Powershell中替换远程计算机上文件中的字符串?

  17. 17

    计算机名和字符串搜索

  18. 18

    将列表中的列表从字符串转换为整数

  19. 19

    通过存储为字符串的键的整数值对字典列表进行排序

  20. 20

    在包含计算机时间的字符串列表中获取项目

  21. 21

    tcl:将字符串解析为列表

  22. 22

    如何在计算机中查找包含文本字符串的文件

  23. 23

    客户端计算机中的 Sql Server 连接字符串

  24. 24

    laravel在本地计算机上返回json字符串,但在弹性beantalk实例上返回整数

  25. 25

    将R中URL编码的GET字符串解析为列表

  26. 26

    将大整数转换为pandas中的字符串(以避免科学计数法)

  27. 27

    将列表的每个整数值转换为熊猫系列下的字符串

  28. 28

    函数的序列表示是否真的用于计算机科学中的图形?

  29. 29

    如何将字符串中除数字以外的字符的一部分解析为整数

热门标签

归档