Удалить кавычки из строки в Python
у меня есть код python, который распознает речь с помощью движка Google STT и возвращает мне результаты, но я получаю результаты в строках с "кавычками". Я не хочу, чтобы цитаты в моем коде, поскольку я буду использовать его для запуска многих команд, и он не работает. Я ничего не пробовал, пока мне нечего было попробовать! Это функция в коде python, которая распознает речь:
def recog():
p = subprocess.Popen(['./speech-recog.sh'], stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
global out,err
out, err = p.communicate()
print out
Это speech-recog.sh:
#!/bin/bash
hardware="plughw:1,0"
duration="3"
lang="en"
hw_bool=0
dur_bool=0
lang_bool=0
for var in "$@"
do
if [ "$var" == "-D" ] ; then
hw_bool=1
elif [ "$var" == "-d" ] ; then
dur_bool=1
elif [ "$var" == "-l" ] ; then
lang_bool=1
elif [ $hw_bool == 1 ] ; then
hw_bool=0
hardware="$var"
elif [ $dur_bool == 1 ] ; then
dur_bool=0
duration="$var"
elif [ $lang_bool == 1 ] ; then
lang_bool=0
lang="$var"
else
echo "Invalid option, valid options are -D for hardware and -d for duration"
fi
done
arecord -D $hardware -f S16_LE -t wav -d $duration -r 16000 | flac - -f --best --sample-rate 16000 -o /dev/shm/out.flac 1>/dev/shm/voice.log 2>/dev/shm/voice.log; curl -X POST --data-binary @/dev/shm/out.flac --user-agent 'Mozilla/5.0' --header 'Content-Type: audio/x-flac; rate=16000;' "https://www.google.com/speech-api/v2/recognize?output=json&lang=$lang&key=key&client=Mozilla/5.0" | sed -e 's/[{}]/''/g' | awk -F":" '{print }' | awk -F"," '{print }' | tr -d 'n'
rm /dev/shm/out.flac
Это было взято из Программа голосовой команды Стивена Хиксона, сделанная для Raspberry Pi
5 ответов
просто использование методов string .replace()
если они происходят повсеместно, или .strip()
если они происходят только в начале и конце:
a = '"sajdkasjdsak" "asdasdasds"'
a.replace('"', '')
'sajdkasjdsak asdasdasds'
# or, if they only occur at start and finish
a.strip('\"')
'sajdkasjdsak" "asdasdasds'
вы можете заменить символы "quote" пустой строкой, например:
>>> a = '"sajdkasjdsak" "asdasdasds"'
>>> a
'"sajdkasjdsak" "asdasdasds"'
>>> a = a.replace('"', '')
>>> a
'sajdkasjdsak asdasdasds'
в вашем случае, вы можете сделать то же самое для out
переменной.
есть несколько способов это может быть достигнуто.
-
вы можете использовать встроенную строковую функцию
.replace()
чтобы заменить все вхождения кавычек в данной строке:>>> s = '"abcd" efgh' >>> s.replace('"', '') 'abcd efgh' >>>
-
вы можете использовать функцию string
.join()
и выражение генератора для удаления всех кавычек из данной строки:>>> s = '"abcd" efgh' >>> ''.join(c for c in s if c not in '"') 'abcd efgh' >>>
-
вы можете использовать регулярное выражение для удаления всех кавычек из данной строки. Это имеет добавленное преимущество позволяет вам контролировать, когда и где цитата должна быть удалена:
>>> s = '"abcd" efgh' >>> import re >>> re.sub('"', '', s) 'abcd efgh' >>>
вы можете использовать eval () для этой цели
>>> url = "'http address'"
>>> eval(url)
'http address'
хотя eval () представляет риск , я думаю, что в этом контексте это безопасно.