[英]Remove quotes from String in Python
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".我有一个 python 代码,它将使用 Google STT 引擎识别语音并将结果返回给我,但我得到的结果是带有“引号”的字符串。 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:这是python代码中识别语音的函数:
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:这是语音识别.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
This was taken from Steven Hickson's Voicecommand Program made for Raspberry Pi这取自 Steven Hickson 为 Raspberry Pi 制作的语音命令程序
Just use string methods .replace()
if they occur throughout, or .strip()
if they only occur at the start and/or finish:只需使用字符串方法.replace()
如果它们始终出现,或者.strip()
如果它们只出现在开始和/或结束处:
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('\"')
You can use eval() for this purpose为此,您可以使用 eval()
>>> url = "'http address'"
>>> eval(url)
'http address'
while eval() poses risk , i think in this context it is safe.虽然 eval() 存在风险,但我认为在这种情况下它是安全的。
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:您可以使用内置字符串函数.replace()
来替换给定字符串中所有出现的引号:
>>> 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:您可以使用字符串函数.join()
和生成器表达式从给定字符串中删除所有引号:
>>> 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)
if string.startswith('"'):
string = string[1:]
if string.endswith('"'):
string = string[:-1]
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.在您的情况下,您可以对out
变量执行相同的操作。
To add to @Christian's comment:添加到@Christian 的评论:
Replace all single or double quotes in a string:替换字符串中的所有单引号或双引号:
s = "'asdfa sdfa'"
import re
re.sub("[\"\']", "", s)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.