【问题标题】:Python "SyntaxError: invalid token" on numbers starting with 0 (zeroes)以 0(零)开头的数字上的 Python“SyntaxError:无效令牌”
【发布时间】:2015-06-28 23:56:13
【问题描述】:

我知道有人可能认为这个问题已经回答了here,但它没有回答我想要实现的目标。

我有电话号码列表,一个非常大的电话号码,其中很多以08 开头,并且有很多重复,这就是我想要删除的。现在我需要将它们放在listset 中,以便我可以在我的程序中使用它们,但它返回Invalid token,如下图所示:

Python 假定以 0 开头的任何内容为八进制。我如何设计一种方法来绕过这个并将这些数字放在一个列表中,然后放在一个集合中?

【问题讨论】:

  • 电话号码应该是字符串。
  • @interjay:我已经从某个地方复制了这些数字并将它们转换为字符串意味着要引用它们中的每一个。数字太多了,无法尝试。
  • 根据错误,您正在使用不允许前缀零的 Python 3。否则,它是 Python 2 中的八进制数。

标签: python


【解决方案1】:

读取您的手机输入文件,将每个手机保存为stringset,然后将删除重复项,因为set 仅包含唯一元素,您可以对其进行进一步的处理。

def get_unique_phones_set():
    phones_set = set()
    with open("/path/to/your/duplicated_phone_file", "r") as inputs:
        for phone in inputs:
            # phone is read as a string
            phones_set.add(phone.strip())
    return phones_set

【讨论】:

    【解决方案2】:

    如果您需要在它们前面加上 08,请使用字符串而不是整数。

    a = ["08123","08234","08123"]
    a = list(set(a)) # will now be ["08123","08234"]
    

    由于(如您所说)您没有简单的方法将众多数字用引号括起来,请转到 http://www.regexr.com/ 并输入以下内容:

    表达式:([0-9]+)

    文本:你的数字

    替换(屏幕底部的可展开窗格:"$&"

    【讨论】:

    • 抱歉,这不能解决我的问题。我不能在每个数字上加上双引号。那将永远持续下去。他们有数千人。
    • 你从哪里得到这些数字?
    • 更新了答案以包含您的问题的解决方案
    • 如果这是一次性转换(即,所有未来的数字将始终作为字符串输入),将数字列表导入 Excel 电子表格,填充它们并使用 Excel 将它们括在引号中公式,然后将它们导入到您的脚本中(我喜欢简单的答案,如果可能的话 :-D )。或者,如果没有,将数字列表保存在文本文件中,然后将它们作为字符串导入到脚本中。
    猜你喜欢
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    • 2015-03-21
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 2020-07-12
    相关资源
    最近更新 更多