У меня есть требование преобразовать английские символы и цифры (0-9), представленные в многобайтовом формате, в однобайтовые. Кроме английских символов должны остаться без изменений. Я могу сделать это с помощью сценариев Python и Shell. То же самое должно быть достигнуто только в python (без использования какого-либо сценария оболочки).
Ввод: 1MORE, 360FLY, BC ジ ャ パ ン, デ イ テ ル ・ ジ ャ パ ン
Выход: 1MORE, 360FLY, BC ジ ャ パ ン, デ イ テ ル ・ ジ ャ パ ン
Сценарий python вызывает скрипт оболочки для каждого встречаемого символа.
Скрипт Python:
import os
import subprocess
import shlex
ipfile=open('Brands.csv','r')
opfile=open('japan_tv_weekly_converted.csv','w',encoding='utf-8')
for line in ipfile:
for character in line:
utf8Character=character
if utf8Character == '"':
os.system('sh iconv_command.sh \\'+utf8Character+' \\'+character)
else:
os.system('sh iconv_command.sh "'+utf8Character+'" "'+character+'"')
os.system('printf "\n">>japan_tv_weekly_converted.csv')
opfile.close()
ipfile.close()
Сценарий оболочки:
#!/bin/bash
x=`echo -n $1|iconv -f utf-8 -t ascii//translit`
if [ "$x" != "?" ]; then
echo -n $1|iconv -f utf-8 -t ascii//translit>>japan_tv_weekly_converted.csv
else
echo -n $2>>japan_tv_weekly_converted.csv
fi
Пожалуйста, помогите!