I have a python Code that will recognize speech using the Google STT engine and give me back the results but I get the results in strings with "quotes". I don't want that quotes in my code as I will use it to run many commands and it doesn't work. I haven't tried anything so far as I didn't get anything to try! This is the function in the python code that will recognize speech:

def recog(): p = subprocess.Popen(['./speech-recog.sh'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) global out,err out, err = p.communicate() print out 

This is 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;' "" | sed -e 's/[{}]/''/g' | awk -F":" '{print $4}' | awk -F"," '{print $1}' | tr -d '\n' rm /dev/shm/out.flac 

This was taken from Steven Hickson's Voicecommand Program made for Raspberry Pi

2

8 Answers

Just use string methods .replace() if they occur throughout, or .strip() if they only occur at the start and/or finish:

a = '"sajdkasjdsak" "asdasdasds"' a = a.replace('"', '') 'sajdkasjdsak asdasdasds' # or, if they only occur at start and end... a = a.strip('\"') 'sajdkasjdsak" "asdasdasds' # or, if they only occur at start... a = a.lstrip('\"') # or, if they only occur at end... a = a.rstrip('\"') 
3

You can use eval() for this purpose

>>> url = "'http address'" >>> eval(url) 'http address' 

while eval() poses risk , i think in this context it is safe.

4

There are several ways this can be accomplished.

  • You can make use of the builtin string function .replace() to replace all occurrences of quotes in a given string:

    >>> s = '"abcd" efgh' >>> s.replace('"', '') 'abcd efgh' >>> 
  • You can use the string function .join() and a generator expression to remove all quotes from a given string:

    >>> s = '"abcd" efgh' >>> ''.join(c for c in s if c not in '"') 'abcd efgh' >>> 
  • You can use a regular expression to remove all quotes from given string. This has the added advantage of letting you have control over when and where a quote should be deleted:

    >>> s = '"abcd" efgh' >>> import re >>> re.sub('"', '', s) 'abcd efgh' >>> 

The easiest way is:

s = '"sajdkasjdsaasdasdasds"' import json s = json.loads(s) 
3
if string.startswith('"'): string = string[1:] if string.endswith('"'): string = string[:-1] 
4

You can replace "quote" characters with an empty string, like this:

>>> a = '"sajdkasjdsak" "asdasdasds"' >>> a '"sajdkasjdsak" "asdasdasds"' >>> a = a.replace('"', '') >>> a 'sajdkasjdsak asdasdasds' 

In your case, you can do the same for out variable.

To add to @Christian's comment:

Replace all single or double quotes in a string:

s = "'asdfa sdfa'" import re re.sub("[\"\']", "", s) 

This will remove the first and last quotes in your string

import ast example = '"asdfasdfasdf"' result = ast.literal_eval(example) print(result) 

Output:

asdfasdfasdf 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy