我有一个与我要导入Stata的xlsx
个文件对应的路径列表:
+--------------------------------------------------------------------+
| path |
|--------------------------------------------------------------------|
1. | G:\Data_backup\Soufang_data\house.dta |
2. | G:\Data_backup\Soufang_data\import_data.log |
3. | G:\Data_backup\Soufang_data/哈尔滨\哈尔滨_house.txt |
4. | G:\Data_backup\Soufang_data/哈尔滨\哈尔滨_land.txt |
5. | G:\Data_backup\Soufang_data/哈尔滨/house\0_银泰城.xlsx |
|--------------------------------------------------------------------|
6. | G:\Data_backup\Soufang_data/哈尔滨/house\1000_芦家街住宅.xlsx |
7. | G:\Data_backup\Soufang_data/哈尔滨/house\1001_国泰小区.xlsx |
8. | G:\Data_backup\Soufang_data/哈尔滨/house\1002_花园街193号小区.xlsx |
9. | G:\Data_backup\Soufang_data/哈尔滨/house\1003_中发郦苑.xlsx |
10. | G:\Data_backup\Soufang_data/哈尔滨/house\1004_荣耀宝座.xlsx |
+--------------------------------------------------------------------+
此外,每个路径都包含一个不确定的Unicode表达式(中文字符),它实际上是一个城市名称( 第一个>,例如" 哈尔滨
&# 34;在这种情况下)。
我想使用类似regexr
的函数提取此Unicode字符串。
我该如何编写代码?
答案 0 :(得分:3)
答案 1 :(得分:2)
答案 2 :(得分:2)
Stata的优秀常见问题解答还没有完全赶上版本14中引入的正则表达式函数的新Unicode版本。这些版本基于ICU正则表达式引擎。您提到的旧版regexr()
仅用于纯ASCII,如帮助文件中所述(请参阅help f_regexm
)。您可以了解有关两组函数here之间差异的更多信息。
如果我理解你的问题,我想要的是:
gen city_name = ustrregexs(0) if ustrregexm(path,"[\u4e00-\u9fa5]+")==1
从最后开始,最后的if语句将限制为具有一个或多个相关Unicode字符的路径,ustrregexs(0)
中的0告诉Stata返回满足正则表达式的整个字符串。之前的ustrregexm()
匹配。
答案 3 :(得分:1)
如果xlsx
文件的路径结构始终相同,您也可以使用substr()
,strpos()
和strrpos()
函数的组合:
clear
input strL string
"G:\Data_backup\Soufang_data/哈尔滨/house\0_银泰城.xlsx"
"G:\Data_backup\Soufang_data/哈尔滨/house\1000_芦家街住宅.xlsx"
"G:\Data_backup\Soufang_data/哈尔滨/house\1001_国泰小区.xlsx"
"G:\Data_backup\Soufang_data/哈尔滨/house\1002_花园街193号小区.xlsx"
"G:\Data_backup\Soufang_data/哈尔滨/house\1003_中发郦苑.xlsx"
"G:\Data_backup\Soufang_data/哈尔滨/house\1004_荣耀宝座.xlsx"
end
generate new_string = substr(string, strpos(string, "/") + 1, abs(strpos(string, "/") - ///
strrpos(string, "/")) - 1)
list
+-------------------------------------------------------------------------------+
| string new_st~g |
|-------------------------------------------------------------------------------|
1. | G:\Data_backup\Soufang_data/哈尔滨/house\0_银泰城.xlsx 哈尔滨 |
2. | G:\Data_backup\Soufang_data/哈尔滨/house\1000_芦家街住宅.xlsx 哈尔滨 |
3. | G:\Data_backup\Soufang_data/哈尔滨/house\1001_国泰小区.xlsx 哈尔滨 |
4. | G:\Data_backup\Soufang_data/哈尔滨/house\1002_花园街193号小区.xlsx 哈尔滨 |
5. | G:\Data_backup\Soufang_data/哈尔滨/house\1003_中发郦苑.xlsx 哈尔滨 |
|-------------------------------------------------------------------------------|
6. | G:\Data_backup\Soufang_data/哈尔滨/house\1004_荣耀宝座.xlsx 哈尔滨 |
+-------------------------------------------------------------------------------+