如何用PHP从制表符分隔TXT文件中获取输入邮编对应的地点名称?
处理带空格的邮编并匹配对应地点名称
我来帮你搞定这个问题!首先你的输入邮编' 2069 '带了前后空格,第一步得先把这些空格去掉,不然可能匹配不到文件里的邮编。接下来根据你常用的编程语言,给你几个实用的实现方案:
核心思路
- 清理输入邮编的前后空格,确保和文件里的邮编格式一致
- 读取制表符分隔的TXT文件,逐行检查第1列的邮编
- 找到匹配项后提取第2列的地点名称
具体实现示例
PHP 版本
// 先把输入的空格去掉,得到干净的邮编 $cleaned_zip = trim($input); // 现在值为'2069' // 打开你的邮编文件,替换成实际文件路径 $zipFile = fopen('zip_locations.txt', 'r'); $targetLocation = null; while (($row = fgetcsv($zipFile, 0, "\t")) !== false) { // 顺便清理文件里邮编的空格,避免文件内的邮编带空格导致匹配失败 $fileZip = trim($row[0]); if ($fileZip === $cleaned_zip) { $targetLocation = trim($row[1]); // 提取地点并清理可能的空格 break; // 找到匹配项就停止循环,提升效率 } } fclose($zipFile); // 输出结果 if ($targetLocation) { echo "找到对应地点:{$targetLocation}"; } else { echo "未查询到该邮编的对应地点"; }
Python 版本
input_zip = ' 2069 ' # 清理输入的前后空格 cleaned_zip = input_zip.strip() target_location = None # 打开文件,替换成你的实际文件路径 with open('zip_locations.txt', 'r', encoding='utf-8') as f: for line in f: # 跳过空行 line = line.strip() if not line: continue # 按制表符分割行内容 zip_parts = line.split('\t') # 确保行有至少两列内容 if len(zip_parts) >= 2: file_zip = zip_parts[0].strip() if file_zip == cleaned_zip: target_location = zip_parts[1].strip() break # 找到匹配项就退出循环 # 打印结果 if target_location: print(f"对应的地点名称是:{target_location}") else: print("没有找到该邮编对应的地点")
Bash Shell 版本
# 原始输入邮编 input_zip=' 2069 ' # 清理前后空格 cleaned_zip=$(echo "$input_zip" | xargs) # 使用awk匹配,制表符分隔,找到第1列等于清理后邮编的行,输出第2列 target_location=$(awk -v zip="$cleaned_zip" -F '\t' '{gsub(/^[ \t]+|[ \t]+$/, "", $1); if ($1 == zip) {gsub(/^[ \t]+|[ \t]+$/, "", $2); print $2; exit}}' zip_locations.txt) # 输出结果 if [ -n "$target_location" ]; then echo "对应的地点名称:$target_location" else echo "未找到该邮编的对应地点" fi
内容的提问来源于stack exchange,提问作者kanarifugl
相关产品推荐
相关产品推荐

