ultimate - Eliminar citas de String en Python
speech recognition python spanish (5)
Hay varias maneras en que esto se puede lograr.
Puede utilizar la función de cadena incorporada
.replace()
para reemplazar todas las apariciones de comillas en una cadena dada:>>> s = ''"abcd" efgh'' >>> s.replace(''"'', '''') ''abcd efgh'' >>>
Puede usar la función de cadena
.join()
y una expresión generadora para eliminar todas las comillas de una cadena dada:>>> s = ''"abcd" efgh'' >>> ''''.join(c for c in s if c not in ''"'') ''abcd efgh'' >>>
Puede usar una expresión regular para eliminar todas las comillas de la cadena dada. Esto tiene la ventaja adicional de permitirle tener control sobre cuándo y dónde se debe eliminar una cotización:
>>> s = ''"abcd" efgh'' >>> import re >>> re.sub(''"'', '''', s) ''abcd efgh'' >>>
Tengo un código de Python que reconocerá el habla con el motor de Google STT y me devolverá los resultados, pero los recibo en cadenas con "comillas". No quiero esas citas en mi código ya que lo usaré para ejecutar muchos comandos y no funcionará. No he intentado nada hasta el momento como no tengo nada para intentarlo! Esta es la función en el código de Python que reconocerá el habla:
def recog():
p = subprocess.Popen([''./speech-recog.sh''], stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
global out,err
out, err = p.communicate()
print out
Esto es 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 $4}'' | awk -F"," ''{print $1}'' | tr -d ''/n''
rm /dev/shm/out.flac
Esto fue tomado del Programa de Comandos de Voz de Steven Hickson hecho para Raspberry Pi
Puede reemplazar los caracteres de "comillas" con una cadena vacía, como esta:
>>> a = ''"sajdkasjdsak" "asdasdasds"''
>>> a
''"sajdkasjdsak" "asdasdasds"''
>>> a = a.replace(''"'', '''')
>>> a
''sajdkasjdsak asdasdasds''
En su caso, puede hacer lo mismo para out
variable.
Puedes usar eval () para este propósito
>>> url = "''http address''"
>>> eval(url)
''http address''
Si bien eval () representa un riesgo, creo que en este contexto es seguro.
Solo use los métodos de cadena .replace()
si ocurren a lo largo, o .strip()
si solo ocurren al inicio y / o finalización:
a = ''"sajdkasjdsak" "asdasdasds"''
a.replace(''"'', '''')
''sajdkasjdsak asdasdasds''
# or, if they only occur at start and finish
a.strip(''/"'')
''sajdkasjdsak" "asdasdasds''
if string.startswith(''"''):
string = string[1:]
if string.endswith(''"''):
string = string[:-1]