Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在CSV中的每个单元格上迭代语言检测代码,并在下一列中打印结果_Python_Python 3.x - Fatal编程技术网

Python 在CSV中的每个单元格上迭代语言检测代码,并在下一列中打印结果

Python 在CSV中的每个单元格上迭代语言检测代码,并在下一列中打印结果,python,python-3.x,Python,Python 3.x,我写了一个程序,当我的输入被硬编码时,它会在检测后返回语言。 在遍历CSV单元格并在下一列中打印相应的语言后,我希望得到相同的结果 我创建了一个代码,在输入硬编码时检测语言。我现在有一张excel表格,上面有一些不同语言的ID和文本。 我想让我的程序逐单元格读取excel,并将结果打印到相邻的列中 from textblob import TextBlob import pycountry b = TextBlob("Si esta yayo si esta yayo alla voy ") i

我写了一个程序,当我的输入被硬编码时,它会在检测后返回语言。 在遍历CSV单元格并在下一列中打印相应的语言后,我希望得到相同的结果

我创建了一个代码,在输入硬编码时检测语言。我现在有一张excel表格,上面有一些不同语言的ID和文本。 我想让我的程序逐单元格读取excel,并将结果打印到相邻的列中

from textblob import TextBlob
import pycountry
b = TextBlob("Si esta yayo si esta yayo alla voy ")
iso_code = b.detect_language()  
# iso_code = "es"
language = pycountry.languages.get(alpha_2=iso_code)
print(language.name)
这是我希望程序迭代的Excel

id  lyric language 
1   Hello how are you 
2   Wie geht es dir
3   cómo estás
4   நீங்கள் எப்படி இருக்கிறீர்கள்
5   Comment vas-tu
如何重新修改代码以获得预期结果

预期:

id  lyric language      Detected Language
1   Hello how are you         English
2   Wie geht es dir           German
3   cómo estás                Spanish
4   நீங்கள் எப்படி இருக்கிறீர்கள்     Tamil
5   Comment vas-tu            French

您没有显示希望如何读取Excel。根据库的不同,您可能有不同的方式读取Excel。但假设你使用熊猫:

import pandas as pd
from textblob import TextBlob
import pycountry

def country(textstring):
    b = TextBlob(textstring)
    iso_code = b.detect_language()  
    language = pycountry.languages.get(alpha_2=iso_code)
    return language.name

df = pd.read_excel("myexcel.xlsx")
df["Detected Language"] = df["lyric language"].apply(country)
print(df.to_string())

此方法使用pandas的
系列。apply()
方法查找列
歌词语言中每个单元格的语言,并将结果分配给新列。

谢谢!这太棒了。是否可以将新列和数据写入同一张excel工作表?同样,如果使用pandas,只需
df.to_excel(“myexcel.xlsx”)
,但实际上它所做的是覆盖旧工作表。否则,您需要一种不同的方式来打开现有文件并手动操作,而不是覆盖。明白了!感谢您的帮助如果我对excel中的数千个单元格使用此脚本,它会给我一个错误:http\u error\u default raise HTTPError(req.full\u url,code,msg,hdrs,fp)urllib.error.HTTPError:http error 503:Service Unavailable除了textblb还有其他选择吗。。我读到谷歌为textblob提供的翻译服务不再免费。另外,由于我的IP现在被封锁了,我根本不能运行这个程序。有什么解决办法吗?我不熟悉。但看看这个答案是否有用: