Python中以0(零)开头的数字出现“SyntaxError: invalid token”错误

4
我知道有些人可能认为这个问题已经在这里得到了回答,但它并没有回答我想要实现的内容。
我有一个电话号码列表,非常庞大,其中很多号码以08开头,并且存在大量重复,我正在尝试去除它们。现在我需要将它们放入listset中,以便在我的程序中使用,但它返回无效标记,如下图所示:

enter image description here

Python将任何以0开头的数字视为八进制。我该如何绕过此问题并将这些数字放入列表再放入集合中呢?

4
电话号码应该是字符串。 - interjay
@interjay:我已经从某个地方复制了这些数字,将它们转换为字符串意味着每个数字都要加引号。这些数字太多了,一个一个尝试是不现实的。 - Yax
根据错误提示,您正在使用Python 3,其中不允许前导零。否则,在Python 2中它是一个八进制数。 - Malik Brahimi
2个回答

2
如果您需要在数字前面添加“08”,请使用字符串而不是整数。
a = ["08123","08234","08123"]
a = list(set(a)) # will now be ["08123","08234"]

鉴于(如您所说)您没有一种简单的方法来用引号包含许多数字,请转到http://www.regexr.com/,并输入以下内容:

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

文本:您的数字

替换(屏幕底部可扩展面板):"$&"


抱歉,这不能解决我的问题。我无法在每个数字上加双引号。那将花费很长时间。它们有成千上万个。 - Yax
你从哪里获取这些数字? - EvenLisle
更新了答案,包含了解决您问题的方案。 - EvenLisle
1
如果这是一次性的转换(即,所有未来的数字将始终作为字符串输入),请使用Excel公式将数字列表导入Excel电子表格中,填充它们并用引号括起来,然后将其重新导入脚本中(在可能的情况下,我喜欢简单的答案 :-D)。或者,如果不是这样,请将数字列表保存在文本文件中,并将其作为字符串导入脚本中。 - Deacon

2

读取您的手机输入文件,将每个电话号码保存为字符串到一个集合中,由于集合只包含唯一元素,因此重复项将被删除,然后您可以对它们进行进一步处理。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接