python 语言始终是中文
最近在python绘图时发现,在使用pandas进行时间显示的格式时,明明设置的转换为英文,但是始终呈现的是中文的形式。
出现中文输出的原因可能与你的 系统区域设置 或 Python环境配置 有关。即使使用 calendar 模块,某些环境下 month_name 仍会返回本地化的月份名称(如中文)。以下是解决方案:
方法一:强制指定英文月份(不依赖系统设置)
直接定义英文月份列表,完全绕过系统区域设置:
import pandas as pd
# 定义英文月份名称列表
english_months = [
'January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December'
]
# 生成日期范围
dates = pd.date_range(start='2004-06-21', end='2004-06-30', freq='24H')
# 组合日期和英文月份
pre_time = [f"{date.day} {english_months[date.month - 1]}" for date in dates]
print(pre_time)
方法二:通过 locale 设置强制使用英语环境
修改系统区域设置,使 strftime 或 calendar 返回英文:
import pandas as pd
import locale
# 设置区域为英语(需要系统支持)
locale.setlocale(locale.LC_TIME, 'en_US.UTF-8') # Linux/Mac
# locale.setlocale(locale.LC_TIME, 'english') # Windows
# 生成日期并格式化
dates = pd.date_range(start='2004-06-21', end='2004-06-30', freq='24H')
pre_time = [date.strftime('%d %B') for date in dates] # %B 会输出全称如 "June"
print(pre_time)
方法三:使用 pandas 的字符串接口(推荐)
直接通过 dt.strftime 结合自定义格式:
import pandas as pd
# 生成日期范围
dates = pd.date_range(start='2004-06-21', end='2004-06-30', freq='24H')
# 强制使用英文月份缩写(需确保环境支持)
pre_time = dates.strftime('%d %b').tolist() # 如果环境正确,%b 会输出 "Jun"
# 如果仍然显示中文,改用全称 %B 并手动替换
pre_time = [s.replace('月', 'June') for s in dates.strftime('%d 6月').tolist()]
print(pre_time)