【引言】Seven-Eleven(logo:7-ELEVEn),已成为便利商店的国际共通语言,商店遍布美国、日本、中国大陆、新加坡、台湾、马来西亚、菲律宾、瑞典、墨西哥、巴拿马、挪威、加拿大、澳大利亚、印尼等国家和地区。目前全球店面数目逾三万家,为全球最大连锁店体系。
那么,问题来了:你有没有关注到这样一个问题:
7-ELEVEn 中的“n” 到底为什么要小写?
网上有很多版本的解说,以下两个版本较为“靠谱”:
1. 来自老板妻子的意见
该公司的logo更换过几次,1969年以后才是小写n。因为创始人汤普森(Joe C. Thompson)的妻子觉得全部大写有点过于生硬、呆板,于是建议把 N 换成小写会柔和、友善一些。这个说法目前是全网最令人信服的,看来“成功男人背后都有伟大女人”的叙事方式永不过时。女性视角往往是大直男所想不到的,后来证明这一调整确实比原来的顺眼多了!
2.出于“风水”的原因
这个原因听着挺扯,不过,似乎更得东方人的心。大写的 N 的最后一笔向上,意味着“(财富)出去”,即“散财”;而小写 n 的最后一笔向下,形成一个包围,意味着“聚财”。这套风水说辞,应该不是美国人想出来的,可能是某个东亚网友 YY 的吧,后来普遍得到整个东亚地区人们的认同。
答案有点匪夷所思吧!至于究竟为什么?反正我不确定,我只是想借此小故事引出一个大家都熟知的重要结论:
具体有哪些需要关注的大小写问题:
比如,Number 和 number 就是两个不同的变量:
>>> Number = 1
>>> number = 2
>>> Number, number
(1, 2)
>>>
# 变量名可以包括字母、数字、下划线,不能以数字开头,且最好也不能用关键字。
导入模块时,名称大部分是“全小写”的,但也有好多异类,比如PIL, PyQt5, cProfile等:
>>> import PIL, PyQt5, cProfile
>>> import pil
Traceback (most recent call last):
File "", line 1, in
import pil
ModuleNotFoundError: No module named 'pil'
>>> import pyqt5
Traceback (most recent call last):
File "", line 1, in
import pyqt5
ModuleNotFoundError: No module named 'pyqt5'
>>> import cprofile
Traceback (most recent call last):
File "", line 1, in
import cprofile
ModuleNotFoundError: No module named 'cprofile'
>>>
>>> import os, sys, math
>>> import OS
Traceback (most recent call last):
File "", line 1, in
import OS
ModuleNotFoundError: No module named 'OS'
>>> import Sys
Traceback (most recent call last):
File "", line 1, in
import Sys
ModuleNotFoundError: No module named 'Sys'
>>> import Math
Traceback (most recent call last):
File "", line 1, in
import Math
ModuleNotFoundError: No module named 'Math'
>>>
大部分关键字都是“全小写”的,'False', 'None', 'True' 除外:
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break',
'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally',
'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal',
'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
比如:
>>> from enum import Enum
>>> class Weekday(Enum):
MONDAY = 0
TUESDAY = 1
WEDNESDAY = 2
THURSDAY = 3
FRIDAY = 4
SATURDAY = 5
SUNDAY = 6
>>> Weekday.SUNDAY
>>>
比如:
>>> import re
>>> re.IGNORECASE
re.IGNORECASE
>>> re.ASCII
re.ASCII
>>> re.UNICODE
re.UNICODE
>>> re.MULTILINE
re.MULTILINE
>>>
在分析爬取出的网页中,“变量名以及变量读取出的变量值”,还有“网址中的参数”等等都要考虑到字母大小写问题,以下是我在练习做爬虫中碰到的实例,一不小心出过好多bug:
content = ('Java','JavaScript','Python')
website = 'http://*****.com/xxxx?xx='
userName = ['Abc','HannYang',......]for c in content:
rank,ids = [],[]
url = website + c.lower()
res = requests.get(url,headers={'User-Agent':agent}).json()
if res["code"] == 200:
data = res["data"]['RankListItem']
rank += [r for r in data]
count = 0
for i,r in enumerate(rank):
if r['userName'].lower() in userName:
......【解决方法】
1. 在字串比较时双方都用upper()或lower()
2. 或者用正则表达式时使用IGNORECASE标志
Python中还有哪些大小写问题需要特别关注的?有想到的请留言补充——